算法介绍
快速排序,又称分割交换排序,是目前公认的最佳排序算法,核心思想是在数列中找一个数作为中介点,将比中介点小的数放到数列的左边(将不比中介点小的数放到数列的右边,两者是同时成立的,只要记住一个就好),把中介点放到相应的位置上,再对左右两边的数列进行同样操作直到两边最多包含一个数字。
视频演示
视频地址:https://www.bilibili.com/video/av18980345
python代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
def quick_sort(data): if len(data)<=1: return data pivot = data[-1] i = 0 j = 0 n = len(data)
while j < n-1: if data[j]<pivot: data[i], data[j] = data[j], data[i] i += 1 j += 1
data[i], data[-1] = data[-1], data[i]
if i>0: data[:i] = quick_sort(data[:i]) if i+1<n: data[i+1:] = quick_sort(data[i+1:])
return data
if __name__ == '__main__': data = [10, 80, 30, 90, 40, 50, 70] sorted_data = quick_sort(data.copy()) print("排序前:", data) print("排序后:", sorted_data)
|
算法分析
快速排序的时间复杂度为:O(n^2)