快速排序partation的实现
来源:互联网 发布:云计算及大数据 教材 编辑:程序博客网 时间:2024/06/08 05:55
将数组视为三部分,一部分为<=key,边界为i,另一部分>=key,剩下的为要处理的元素,下标为j。如果a[j]<=x,将i++,同时a[j]和a[i]交换。
#include<stdlib.h>#include<stdio.h>void exch(int &a,int &b){//exchange elem int tmp; tmp = a; a= b; b = tmp;}int partation(int a[],int p,int q){ int j; int i = p; int x = a[p];//set a[p] as key elem for(j= p+1;j<=q;j++){//traverse the elem to be deal with if(a[j]<=x){ i++; if(i != j) exch(a[j],a[i]); } } exch(a[p],a[i]);// at last swap key and the boundry elem of the part which less than the key return i;}void q_sort(int a[],int p,int q){ if(p<q){ int m = partation(a,p,q); q_sort(a,p,m-1); q_sort(a,m+1,q); }}int main(){ int array[] = {4,7,4,2,19,8,7,64,3,2,1,0,9,6,4,7,4,2,1,6,8}; int array_size = sizeof(array)/sizeof(int); q_sort(array,0,array_size-1); for(int i =0 ;i<array_size;i++) printf("%d ",array[i]); return 1;}
- 快速排序partation的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- 快速排序的实现
- javascript之数组操作
- 十种智能手机定位跟踪方式解析
- 文件查找find方法
- 对于WORD中公式后面标号不能对齐的问题
- Erlang开发之IDE
- 快速排序partation的实现
- 【错误】C语言,出现error C2275 将此类型用作表达式非法
- unbut使用记录-fcitx在ubuntu12.10下不能切换出来
- 我的Android进阶之旅------>Android通过调用Webservice实现手机号码归属地查询
- wifi
- Word符号,教你怎么在方框里打钩?
- Uva 10585 - Center of symmetry
- http://poj.org/problem?id=2063
- 5.2实验练习