前端之算法(四)快速排序
大家好,今天我们要聊的是快速排序,一种性能更好的排序算法。那我们开始吧!Let's go !
快速排序
快速排序比冒泡排序、选择排序、插入排序的性能都要好,也是以一种用于实战的排序算法,Chrome 曾经就用它作为 sort 的排序算法。
快速排序的思路
分区:从数组中任意选择一个
基准
,所有比基准小的元素放在基准前面,比基准大的元素放在基准的后面。递归:递归地对基准前后地子数组进行分区。
快速排序动画
首先选择数组中任意一个作为基准,既然是任意,就以数组地第一个作为基准。
黄色
为当前基准。然后对数组进行挨个比较,
红色
为当前比对地元素。比基准大的为
紫色
,小的为绿色
。一轮循环后,把 基准插入到所有绿色后面。
就完成了整个分区操作。
接下来对前后两个分区递归进行如上分区操作。
就可以完成整个排序了。
实现
复制代码
快速排序的时间复杂度
递归的时间复杂度是 O(logN)。
分区操作的时间复杂度是 O(n)。
时间复杂度:O(n * logN)。
End~~~
评论