快速排序
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据编程有序序列。
过程分析
一趟排序过程:
- 设置两个变量 i、j, 排序开始的时候: i = 0, j = N -1;
- 以第一个数组元素作为关键数据,赋值给 key:key = A[0];
- 从 j 开始向前搜索,即由后向前开始搜索(j –), 找到第一个小于 key 的值 A[j],将 A[j] 和 A[i] 交换;
- 从 i 开始向后搜索,即由前向后开始搜索(i ++),找到第一个大于 key 的 A[i], 然后将 A[j] 和 A[i] 交换;
- 重复 3、4 步骤,知道 i = j;
Code
复杂度分析
前言
不得不说冒泡排序相对来说比较复杂些,这篇博客也是经过了三四天才写完的,刚开始看别人写的算法实现,不太明白,然后看了下排序的动态图,还是模模糊糊。我觉得,怎么算是掌握了一个算法呢?首先,要知道每一步怎么去操作,比如给一串数字告诉你一个排序算法名字,你可以写出每一步骤怎么做,这是掌握;其次,要写出它的伪代码;最后,代码实现!很多公司会让你说这个算法题奥!