两种快速排序的实现(C语言)
来源:互联网 发布:大公司程序员职业规划 编辑:程序博客网 时间:2024/05/22 01:42
两种搜索方式不一样,第 0种单向搜索,第1 种双向搜。
代码如下:
#include <stdio.h>#include <stdlib.h>#include <time.h>#define MAXVAL 8#define STATIC 0void display();int a[MAXVAL] = {8,2,1,3,4,5,6,9};int quick1(int a[], int sta, int end){ int i, j; int tmp = a[sta],temp; i = sta + 1; j = end; do { while(i <= j){if(a[i] >= a[sta]) break; i++;} if(i >= end) { temp = a[i - 1]; a[i - 1] = a[sta]; a[sta] = temp; return i - 2; } while(i < j){if(a[j] < a[sta]) break; j--;} if(i < j) { temp = a[j]; a[j] = a[i]; a[i] = temp; } if( i == j) { temp = a[i-1]; a[i-1] = a[sta]; a[sta] = temp; return i-1; } }while(1); return -1;//avoid warning,not used.}void quicksort1(int a[],int sta,int end){ int mid; int temp; if(sta >= end) { return; } if(end - sta == 1) { if(a[sta] > a[end]) { temp = a[sta]; a[sta] = a[end]; a[end] = temp; } return ; } mid = quick1(a,sta,end); quicksort1(a,sta,mid); quicksort1(a,mid+1,end);}int quick0(int a[], int sta, int end){ int i,j; int tmp = a[sta],temp; for(i = j = sta+1; i < end; i++) { if(a[i] <= tmp) { temp = a[j]; a[j] = a[i]; a[i] = temp; j++; } } temp = a[j-1]; a[j-1] = a[sta]; a[sta] = temp; return j-1;}void quicksort0(int a[],int sta,int end){ int mid; if(sta >= end) { return; } display(); mid = quick0(a,sta,end); quicksort0(a,sta,mid); quicksort0(a,mid+1,end);}void display(){ int i = 0, j = 0; for(i = 0; i < MAXVAL; i++) { j += printf("%d ",a[i]); if(j >= 50) { j = 0; printf("\n"); } } printf("\n");}bool verify(int a[]){ int i; for(i = 1; i < MAXVAL; i++) { if(a[i-1] > a[i]) return false; } return true;}int main(){ int i = 0,j = 100; srand(time(NULL));#if STATIC == 0 for(i = 0; i < MAXVAL; i++) { a[i] = rand() %20;//random some data }#endif quicksort1(a,0,MAXVAL-1);// or quicksort0(a,0,MAXVAL); if(!verify(a)) { printf("error \n"); display(); } return 0; }
阅读全文
0 0
- 两种快速排序的实现(C语言)
- 快速排序的实现两种实现
- C语言 实现两种排序方法
- 快速排序的C语言代码实现
- 快速排序的C语言代码实现
- 快速排序的C语言代码实现
- 快速排序的C语言代码实现
- 快速排序的实现-C语言
- 快速排序算法的c语言实现
- 快速排序的C语言实现
- 快速排序的C语言实现
- 快速排序算法的C语言实现
- 【算法】C语言实现的快速排序
- 快速排序算法的C语言实现
- 快速排序的c语言实现代码
- 快速排序算法的C语言实现
- C语言快速排序算法的实现
- 快速排序算法的C语言实现
- HDOJ Wash JAVA超时 6000
- scikit-learn 中文文档-高斯过程-监督学习|ApacheCN
- UVA 11374 SPFA+路径打印
- 人工智能学习清单
- POJ 1129.Channel Allocation
- 两种快速排序的实现(C语言)
- Leetcode 113. Path Sum II
- Ubuntu14.04 增加Swap分区
- 一个轻量级的分布式RPC框架
- request、response 中文乱码问题与解决方式
- mysql 练习1 完成一个由 学生表 选课表 课程表 的一个多表查询
- 1003. Emergency (25)(java版)
- AngularJS http 服务
- RedHat 安装 f2fs-tools