算法题--快速排序

Posted 昊小邦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法题--快速排序相关的知识,希望对你有一定的参考价值。

      本期博主将要讲解的是排序速度非常快的一种算法, 这种快速处理的基础是建立在计算机的硬件基础上的. 这种排序的思路也比较简单, 实际上就是从一组数据中选择一个标准, 之后分别从两头开始找, 所有比这个数字小的放到其前面, 比这个数字大的放到其后面. 然后再把这组数据按这个标准数字的位置一分为二, 剩下两部分的数据继续重复这种操作, 直到这组数据不能分下去, 则排序就完成了.

       下面是图例演示:

数据初始状态

一般默认选择第一个数字为标准值, 则先把5抽出来, 这样5的位置就空出来了

算法题--快速排序

之后从右边开始寻找比5小的数字, 找到了2, 于是把2 放到5的位置

算法题--快速排序

换成从左边找, 3 小于5不用动,6大于5, 把6放到原先2的位置

算法题--快速排序

再从右边找, 4小于5 把4放到原先6的位置

算法题--快速排序

 再从左边找, 1小于5 不用动,于是前后都找完了. 把5放到空缺位置

之后把这组数字 从5位置分割变成两组数字

每一组数字,按照前面的步骤重复操作. 直到无法分割, 排序就完成了.

到这里快速排序的思维就介绍完了. 但是你肯定不明白它快在哪里.

实际上, 这里有一个二分的策略. 就是我图中最后的这一步. 由于计算机可以并行计算数据, 所以假设有1万条数据, 二分一次处理5千个数据, 再二分就是2千5百个. 可以算一下2的13次方等于8192, 也就是只需要重复14次就可以处理1万条数据了. 所以这就是它快的地方.你学会了吗?

以上是关于算法题--快速排序的主要内容,如果未能解决你的问题,请参考以下文章

算法题--快速排序

基于快速排序思想的三个算法题

java算法面试题:排序都有哪几种方法?请列举。用JAVA实现一个快速排序。选择冒泡快速集合至少4种方法排序

PHP面试题通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序

快速串讲校招高频面试题——排序算法和复杂度

Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序