快速排序是对冒泡排序的一种改进,快速思想是使用分治法,其中有一个基准值,把一个数组中的数分为较基准值大和较基准值小的两部分(子数组),所有比基准值大的放在基准值后面,所有比基准值小的放在基准值前面,然后递归再次切分,直至子数组的大小为1或0,此时全局有序。
快速排序是不稳定的排序,在排序后,相同值的先后顺序可能会变化,所以是不稳定的。
所谓是稳定性是指:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。
Scala版本:
在网上看了不少人的快速排序代码,其整体思想都是一样的,分治,递归。但是具体实现细节上则各不相同,八仙过海,大显神通。上面代码是我觉得比较好简洁,且理解相对容易的一种写法。另外Scala版本有一个十分精简的写法:
Scala这么优雅的语言,真的让人赏心悦目。