# 快速排序,是冒泡排序的一种优化,将序列分部分进行
# 基本原理(升序):
# 1.挑选基准,从左开始比基准小的放在基准前,从右开始比基准小的放在基准后
# 2.再次重复,直至实现对基准两部分的重新排列(左右查找相遇)
# 2.对剩余部分递归实现排序
# 实现过程:
# 参考:https://blog.csdn.net/razor87/article/details/71155518
import random
Range = 100
Length = 5
list = random.sample(range(Range),Length)
print('before sort:',list)
left = 0
right = Length - 1
temp = list[left] #定义基准
def quick_sort(array, left, right): #传入序列及分区位置
if left >= right: #分区缩小到一个元素时,停止向下递归
return
low = left #继承上一级分区边界
high = right
key = array[low] #定义基准
while left < right: #实现将分区排列
while left < right and array[right] >= key: #找到小于基准的数,放在左边(基准处、原大值处)
right -= 1
array[left] = array[right]
while left < right and array[left] <= key: #找到大于基准的数,放在右边(原小值处)
left += 1
array[right] = array[left]
array[right] = key #在重复交替左右之后,实现分区排列,将中间赋值基准
quick_sort(array, low, left - 1)
quick_sort(array, left + 1, high)
quick_sort(list,left,right)
print('after sort:',list)
python算法9.10——快速排序
猜你喜欢
转载自blog.csdn.net/nominior/article/details/82598427
今日推荐
周排行