快速排序
来源:互联网 发布:日本观光局数据 编辑:程序博客网 时间:2024/06/11 18:24
一直想复习下算法,先把经典的快排复习下,好好理解下分治思想:
先介绍快速排序的算法过程:
[1].记录第一个数位置和最后一个数位置; int i = low; int j = high;[2].找到主元位置,可以是第一个数,也可以是最后一个,或者随机的一个位置,一般可以以数组中第一个位置的数,
int povit = a[low],主元选择好了就记录不改变它的值;
[3].如果主元是第一个数,则由 j 从后向前搜索,直到找到第一个小于主元的数,与主元进行交换位置.
[4].然后由 i 从前向后搜索,找到第一个大于主元的数,并与主元交换位置.
[5].重复[3],[4]步骤,直到 i = j;
a[0] ..........a[7]
12,3,5,44,21,8,56,2
主元:a[0] = 12;
-----------------------------------------------------------------
2,3,5,44,21,8,56,12 i = 1; j = 7;
2,3,5,12,21,8,56,44 i = 3;j =6;
---------------------- 一趟完成,开始第二趟------------------------
2,3,5,8,21,12,56,44 i = 4;j = 5;
2,3,5,8,12,21,56,44 i = 4;j = 4;
---------------------- 一趟完整移位结束,主元移到了 4 的位置------------------------
----------------------此时由主元位置分为前后2个数组-------------------------------
{2,3,5,8} 12 {21,56,44}
----------------------递归对前后2个数组进行上述移位操作---------------------------
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 微软等数据结构+算法面试100题(43)-- 把二元查找树转变成排序的双向链表
- 使用批处理添加受信任站点和设置ie安全级别
- android run as 出现 .. 的各种问题
- iphone开发 音频播放
- C++之#progma pack预处理
- 快速排序
- 微软等数据结构+算法面试100题(44)-- 求子数组的最大和
- java技术总结
- C++继承中的虚析构函数
- volatile关键字的作用
- MySQL统计函数记录——GROUP_CONCAT()函数
- larbin的编译 运行+三个配置文件阅读
- 开源加密解密库比较
- 用CSS实现下拉菜单的多种方法