[算法练习]快速排序的C语言实现
2017-03-22 22:00
375 查看
#include <stdio.h> void quick_sort(int A[],int p,int r){ if(p<r){ int q=partition(A,p,r); quick_sort(A,p,q-1); quick_sort(A,q+1,r); } } int times=0; //basic function of quick sort int partition(int A[],int p,int r){ /* assume A[r] as the benchmark; while A[cur] is move from A[p] to A[r]: if A[cur] is smaller than A[r], then exchange A[par] and A[cur]; A[cur] move to next; at last, exchange A[r] and A[par]; so that A[par] is sorted in the array A[], because the numbers before A[par] is smaller than it, and the numbers after A[par] is larger than it. */ int cur=p,par=p; while(cur<r){ if(A[cur]<A[r]){ //exchange A[cur] and A[par] then par++ int temp=A[cur]; A[cur]=A[par]; A[par]=temp; par++; } cur++; } //exchange A[r] and A[par] int temp=A[r]; A[r]=A[par]; A[par]=temp; printf("\nafter %d times:\t",++times); int i; for(i=0;i<10-1;i++){ printf("%d ",A[i]); } return par; } int main(){ int a[]={3,1,5,12,6,8,11,7,4,15}; int length=sizeof(a)/sizeof(a[0]);//get length of a[] int i; printf("before:\t"); for(i=0;i<length;i++){ printf("%d ",a[i]); } quick_sort(a,0,length-1); printf("\nafter:\t"); for(i=0;i<length;i++){ printf("%d ",a[i]); } getchar(); }
相关文章推荐
- 【算法】C语言实现的快速排序
- C语言实现数组快速排序(含对算法的详细解释)
- [算法练习]堆排序的C语言实现
- [算法练习]冒泡排序的C语言实现
- 算法导论——关于快速排序的实现(c语言实现)
- C语言实现数组快速排序(含对算法的详细解释)
- [算法练习]选择排序的C语言实现
- 图解算法练习--快速排序(PHP实现)
- 图解算法练习--快速排序(GO实现)
- [算法练习]插入排序的C语言实现
- C语言实现数组快速排序(含对算法的详细解释)
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 初入C语言!整数算法练习1:通过编程实现,统计1~n有多少个9 ? 提示:n通过参数传入!
- 使用插入排序优化快速排序的算法实现
- 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
- C语言中实现点在多边形内的算法
- 10个重要的算法C语言实现源代码(其2--牛顿插值)
- 10个重要的算法C语言实现源代码(其1-拉格朗日)
- 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
- 10个重要的算法C语言实现源代码(8-9-10-----秦九昭和幂法和高斯塞德尔)