快速排序

def quick_sort(arr):
    # 1 如果列表内的元素为1或小于1 则返回本身
    if len(arr) <= 1:
        return arr
    # 2 求出中位数
    pivot = arr[len(arr) // 2]  # 选择中间元素作为枢纽元
    # 3 定义三个列表  用来存储 大于小于 等于中位数的列表 
    less, equal, greater = [], [], []
    '''
    less: 小于
    equal: 等于
    greater: 大于
    '''
    # 4 将值做分类 放到不同的列表中
    for num in arr:
        if num < pivot: # 分类 小于中位数的放到小于列
            less.append(num)
        elif num == pivot: # 等于中位数的放到中位数列
            equal.append(num)
        else:# 大于中位数的放到大于列
            greater.append(num)
    return quick_sort(less) + equal + quick_sort(greater)

# 示例用法
arr = [5, 2, 9, 1, 7, 6, 3]
sorted_arr = quick_sort(arr)
print(sorted_arr)

 

posted @ 2023-09-04 15:52  胖豆芽  阅读(1)  评论(0编辑  收藏  举报