python算法9.10——快速排序

# 快速排序,是冒泡排序的一种优化,将序列分部分进行
# 基本原理(升序):
# 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)

猜你喜欢

转载自blog.csdn.net/nominior/article/details/82598427