(32)快速排序
来源:互联网 发布:左程云面试算法指南 编辑:程序博客网 时间:2024/05/16 10:05
基本思想:首先将待排序记录序列中的所有记录作为当前待排序区域,从中任选一个记录(通常可选取第一个记录),以它的关键字作为枢轴,凡其关键字小于枢轴的记录均移至该记录之前,反之,凡关键字大于枢轴的记录均移动至该记录之后,这样一趟排序之后,记录将无序序列分割成两部分,再在这两部分中分别重复上述操作。
代码:
#include<iostream>using namespace std;void quickSort(int num[],int low,int high) {if (low >= high) return;int first = low;int last = high;int key = num[first];while (first < last) {while (first < last && num[last]>=key) { //小元素前移--last;}num[first] = num[last];while (first < last && num[first] <= key) { //大元素后移++first;}num[last] = num[first];}num[last] = key;quickSort(num, low, first - 1);quickSort(num, first + 1, high);}void main() {int num[12] = { 10,6,2,33,15,12,23,76,1,54,22,9 };quickSort(num,0,11);for (auto x : num) {cout << x << " ";}cout << endl;system("pause");}
快速排序的平均时间复杂度为:O(nLog2n)
如果待排序记录是一个按关键字有序,那么快速排序退化为气泡排序,时间复杂度为: O(n2)
阅读全文
0 0
- (32)快速排序
- 排序总结(快速排序)
- 排序(之快速排序)
- 快速排序(java排序)
- wikioi1076 排序(快速排序)
- 排序(5)快速排序
- c++排序(快速排序)
- 排序(二)快速排序
- 排序(3)--快速排序
- 排序(2)快速排序
- 排序(4)快速排序
- 快速排序-(交换排序)
- 快速排序(JavaScript)
- 快速排序(Java)
- 快速排序(原创)
- 快速排序(quickSort)
- 快速排序(Quicksort)
- 快速排序(C++)
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- Elasticsearch小记之sort
- iOS中UILabel设置可变长度并加圆角后尾部出现黑线
- 如何优化JAVA代码及提高效率
- SpringMvc4.3.8搭建记录
- (32)快速排序
- 之江学院 2017 J qwb又偷懒了 树状数组
- sql-触发器trigger
- 常用正则表达式
- 家庭医生Android应用开发总结------主界面
- java读取纯真IP数据库qqwry.dat的源代码
- 负数补码为正数取反+1的图形化解释
- Synchronized同步静态方法和非静态方法
- mysql笔记-[Err] 1235