快速排序
2016-09-03 17:32
204 查看
快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 。
//快速排序 void quick_sort(int s[], int l, int r) {
//对l到r区间进行排序 if (l < r) { //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1 int i = l, j = r, x = s[l]; while (i < j) { while(i < j && s[j] >= x) // 从右向左找第一个小于x的数 j--; if(i < j) s[i++] = s[j]; while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数 i++; if(i < j) s[j--] = s[i]; } s[i] = x; quick_sort(s, l, i - 1); // 递归调用 quick_sort(s, i + 1, r); } }采用分治法,平均时间复杂度是O(nlgn)
相关文章推荐
- 划分--快速排序
- 快速排序
- javascript--快速排序
- 快速排序
- 快速排序总结
- 交换排序——冒泡排序和快速排序,C++代码实现
- 快速排序
- Java实现排序算法——快速排序
- 快速排序的划分及其扩展
- 笔试算法题(54):快速排序实现之单向扫描、双向扫描(single-direction scanning, bidirectional scanning of Quick Sort)
- 快速排序
- 快速排序2
- 快速排序 c++ 实现
- C++快速排序
- 算法学习之排序算法:快速排序
- 基本排序算法(冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 希尔排序)
- 算法学习(二)快速排序(下)
- 快速排序
- 快速排序
- 快速排序_排序算法