快速排序
来源:互联网 发布:32核cpu nginx进程 编辑:程序博客网 时间:2024/04/30 19:22
快速排序(QuickSort)
例如:49 38 65 97 76 13 27 59 进行划分的步骤
快排是种很猛的算法,对于大量无次序的数据进行排序时效率非常高,他的基本思想是:每一次都选取待排序序列的第一个关键字作为基准,使左边子区间所有关键字小于或等于基准,右边子区间所有关键字大于或等于基准。
1、确定右边子区间的时候让基准从最右边开始比较当发现有比其小的关键字时,令基准和该关键字交换。
2、当基准和右边区域的一个关键字交换过位置之后,再令基准同左边子区间关键字比较,从最左边开始比较,遇到比基准大的关键字时,令基准和该关键字交换。
3、依次循环第1步,第2步。直到左边子区间所有关键字小于或等于基准,右边子区间所有关键字大于或等于基准。
4、以上是第一次划分,之后重复前面3步。
例如:49 38 65 97 76 13 27 59 进行划分的步骤
(1)49和27交换 (27 38 65 97 76 13 49 59)
(2)49和65交换 (27 38 49 97 76 13 65 59)
(3)49和13交换 (27 38 13 97 76 49 65 59)
(4)49和97交换 (27 38 13 49 76 97 65 59)
(2)49和65交换 (27 38 49 97 76 13 65 59)
(3)49和13交换 (27 38 13 97 76 49 65 59)
(4)49和97交换 (27 38 13 49 76 97 65 59)
第一次划分完成,结果为:(27 38 13 )49 ( 76 97 65 59),接着继续划分。
(1)27和13交换 ,76和59交换(13)38(27)49(59 97 65 76)
(2)27和38交换 ,76和97交换13 27 38 49(59 76 65 97)
(3)76和65交换 13 27 38 49(59 65 76 97)
(4)13 27 38 49 (59 65)76(97)
(5)13 27 38 49 (59)(65)76 (97)
(6)13 27 38 49 59 65 76 97
(2)27和38交换 ,76和97交换13 27 38 49(59 76 65 97)
(3)76和65交换 13 27 38 49(59 65 76 97)
(4)13 27 38 49 (59 65)76(97)
(5)13 27 38 49 (59)(65)76 (97)
(6)13 27 38 49 59 65 76 97
快速排序性能:
1、 总比较次数最大值O(n^2)
2、 当文件的记录已按递增(或递减)排列时,快速排序所需的比较次数较多。
3、 最坏时间复杂度O(n2),最好时间复杂度O(nlgn);
4、 快排是不稳定的。
1、 总比较次数最大值O(n^2)
2、 当文件的记录已按递增(或递减)排列时,快速排序所需的比较次数较多。
3、 最坏时间复杂度O(n2),最好时间复杂度O(nlgn);
4、 快排是不稳定的。
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 回调函数
- 通信软件白盒测试的三种境界
- 如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量
- 用VC++6.0的Sockets API实现一个聊天室程序
- 给单元格做特殊样式
- 快速排序
- 用CSS缩写给你的网站加速
- php使用fsockopen方法代理读取远程网页
- Winsock的编程特点与异步选择机制
- 玩的岁月
- VC编程轻松获取局域网连接通知
- ASP.NET 主题和外观
- 关于WM_PAINT消息响应小结
- VC++编程实现网络嗅探器