快速排序
来源:互联网 发布:手机淘宝扫一扫怎么用 编辑:程序博客网 时间:2024/04/29 07:08
快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
# include <stdio.h>//此次排序为升序int Split(int a[], int low, int high){//交换数列a[low-high]之间的数据,确定分割点的下标//并返回,此时在它之前(后)的记录均不大(小)于它 int i, j, temp; i =low;//低端记录 j = high;//高端记录 temp = a[low];//用a[low]做分割点数据 <1> while(i<j){//未分类的区间大于>0 while(temp<=a[j]&&i<j){//高端记录的数据大于分割点数据 j--;//高端向低端移到,继续比较 }//<6> if(i<j){ a[i] = a[j]; i++; }//<2> //<4> while(temp>a[i]&&i<j){ i++; } if(i<j){ a[j] = a[i]; j--; }//<3> <5> } a[i] = temp;//将分割点数据插入到其对应的位置,使在它之前(后)的记录均不大(小)于它 <7> return i;}//对数列a[low-high]作快速排序void QuickSort(int a[],int low, int high ){ int mid; if(low < high){ mid = Split(a, low, high); //将数列a一分为二, mid为分割点位置下标 QuickSort(a, low, mid-1);//对于数据小于分割点数据的低子表递归快速排序 QuickSort(a, mid+1, high);//对于数据大于分割点数据的高子表递归快速排序 } return ;}int main(void){ int a[] = {49, 38, 65, 97, 76, 13, 27, 49}; QuickSort(a,0,7); for(int i = 0; i<8; i++){ printf("%d ", a[i]); } return 1;}
阅读全文
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- Windows下安装并设置Redis
- 括号匹配(二)
- 人生不同的阶段
- HUST1579-Portal BFS+状态压缩 2017华科现场赛-C
- linux 硬链接和软连接
- 快速排序
- mysql之触发器
- C++11/14/17 nullptr
- wiskey的眼神
- C语言(New B语言)
- vb.net 教程 3-4 窗体编程 公共控件8 RichTextBox
- 前缀树 / 字典树 / Trie树
- 归并排序及一些优化
- BZOJ4837 [Lydsy2017年4月月赛]LRU算法