#includeusing namespace std; int Partition(int a[], int low, int high) //进行一趟排序,返回枢轴部分 { a[0] = a[low]; //用子表的第二个元素做枢轴 int pivotkey = a[low]; //把枢轴记录存在pivotkey中 while (low < high) //从表的两边向中间交替 { while (low < high&&a[high] >= pivotkey) --high; a[low] = a[high]; //比枢轴小的记录移到low指示的空位上 while (low < high&&a[low] <= pivotkey) ++low; a[high] = a[low]; //比枢轴大的记录移到high指示的空位上 } a[low] = a[0]; //把枢轴移到左右子表中间的位置 return low; //返回枢轴位置 } int Func(int a[]) //确定表长 { int *m = a; while (*m++); m--; return(m - a); } void QSort(int a[], int low, int high) { if (low < high) //判断长度大于1 { int pivotloc = Partition(a, low, high); //左右子表的排序同时进行。知道low=high QSort(a, low, pivotloc-1); //对左子表递归排序 QSort(a, pivotloc+1, high); //对右子表递归排序 } } void QuickSort(int a[]) //快速选择排序 { int n = Func(a); QSort(a, 1, n-1); } void Print(int a[]) //输出顺序表 { int n = Func(a); for (int i = 1;i < n;i++) cout << a[i]<<" "<< endl; } int main() { int a[20] = {19,13,47,35,67,29,50,34,18,90,10 }; cout<<"快速排序前:"< 欢迎分享,转载请注明来源:内存溢出
快速排序简单版
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
2021SC@SDUSC PALISADE开源库(五)公钥加密模块的示例程序(二)depth-bfvrns.cpp
上一篇
2022-12-17
C++学习(五)
下一篇
2022-12-17
评论列表(0条)