更多代码: gitee主页:https://gitee.com/GZHzzz
博客主页: CSDN:https://blog.csdn.net/gzhzzaa
写在前面
- 面试必用的十大排序算法,大家一起互相学习啊!
快速排序😎
- 快速排序是刷题用的最多的一个算法,希望大家熟记、理解!
算法流程
- 前后指针的思想:
-
初始时选定prev为序列的开始,cur指针指向prev的后一个位置,同样选择最左边的第一个数字作为key
-
cur先走,找到小于key的值,找到就停下来
-
++prev
-
交换prev和cur为下标的值
-
一直循环重复2 3 4步,停下来后,最后交换key和prev为下标的值
-
这样key到达了正确的位置
算法演示
代码展示
def quickSort(arr, left=None, right=None):
left = 0 if not isinstance(left,(int, float)) else left
right = len(arr)-1 if not isinstance(right,(int, float)) else right
if left < right:
partitionIndex = partition(arr, left, right)
quickSort(arr, left, partitionIndex-1)
quickSort(arr, partitionIndex+1, right)
return arr
快速排序的总结
-
快排的整体综合性能和使用场景都是比较好的,所以才敢叫快速排序
-
快排唯一死穴,就是排一些有序或者接近有序的序列,例如 2,3,2,3,2,3,2,3这样的序列时,会变成**O(N^2)**的时间复杂度
写在最后
十年磨剑,与君共勉!
更多代码:gitee主页:https://gitee.com/GZHzzz
博客主页:CSDN:https://blog.csdn.net/gzhzzaa
- Fighting!😎
while True:
Go life