本月1日的时候已经写过javascript的(冒泡排序算法),但是冒泡排序算法我在实际应用真的几乎没用过,主要是冒泡排序实在太低效并且真正的排序需求也少之又少,不过冒泡排序存在的一大意义就是面试。今天来说说另外一种面试中经常出现的题目:快速排序算法。

原理

根据(维基)中的解释:快速排序使用分治法策略来把一个序列分为两个子序列。

步骤为:

** 1,先判断此数组数量是否为1个,如果小于等于1个,直接就返回了。 ** 2,从数组中挑出一个元素,作为“基准”(pivot); ** 3,重新排序数列,将数列分为三个部分,所有比基准小的数列放在第一个部分中(放在一个数组中),基准是第二个部分,所有比基准大的数列放在第三个部分中(放在一个数组中)。这一个步骤下来,就将原始数组按照大小分成了三个部分了。 ** 4,递归分别操作第一部分和第三部分。也就是说,将第一部分(小于基准的部分)也按照步骤一、二、三进行排序,第二部分(就是基准)只需要步骤一了,因为基准数量为1直接返回了,第三部分(比基准大的部分)也是按照步骤一、二、三进行排序。

用图来说明一下: