快速排序
快速排序
概念
快速排序是在分治算法基础上设计出来的一种排序算法
优点
与其他算法相比,快速排序算法具有:效率高、耗费资源少、容易实现
实现思路
- 从待排序的序列中任意选择一个元素,假设为pivot,作为中间元素
- 将所有比pivot小的元素放到它的左边,比pivot大的元素放到它的右边,把序列分成左右两个子序列
- 将左右两个子序列看作待排序列,重复1、2步骤
- 直到所有子序列不可再分,也就是子序列不可再分或不包含任何元素,整个序列就变成了一个有序的序列
画图实现

代码实现
# 快速排序
def fastSort(arr,l,r):
if l>=r: # 序列的左右边界,如果左边界大于等于右边边界,说明序列不可再分
return
left=l # 序列的左边界
right=r # 序列的右边界
pivot=arr[r] # 最右边的数字为基准数
while True:
while arr[left]<pivot and left<right: # 左边的元素小于pivot
left+=1
while arr[right]>pivot and left<right: # 右边的元素大于pivot
right-=1
if left>=right:
break
else:
arr[left],arr[right]=arr[right],arr[left]
left+=1
right-=1
# 此时 left=right
arr[left],arr[r]=arr[r],arr[left]
mid=left
fastSort(arr,l,mid-1) # 左边的子序列
fastSort(arr,mid+1,r) # 右边的子序列
arr = [35, 33, 42, 10, 14, 19, 27, 44, 26, 31]
fastSort(arr, 0, len(arr)-1)
print(arr)

浙公网安备 33010602011771号