快速排序(python)

【快速排序的思想】

  1. 选中标记列表中间位置的值middle = list[len(list) // 2] ,然后删除这个值。
  2. 对比middle大的值放到rightList里面,比middle小的值放到leftList里面。
  3. 迭代(即递归),返回值quickSort(leftList) + middle + quickSort(rightSort)。

图片来源:菜鸟教程

# coding = utf-8
import random
import sys
# 快速排序
list = []
# 随机生成列表
def generate():
    n = int(input("请输入本次排序数字个数:"))
    while n > 0:
        list.append(random.randint(0,1000))
        n -= 1
    print("生成的数字列表如下:%s" %list)
#快速排序
def quickSort(markList):
    if len(markList) <= 1:
        return markList
    middle = markList[len(markList) // 2]
    leftList,rightList = [],[]
    del markList[len(markList) // 2]
    for value in markList:
        if value > middle:
            rightList.append(value)
        else:
            leftList.append(value)
    return quickSort(leftList) + [middle] + quickSort(rightList)    #迭代操作
def main():
    generate()
    print("排序后数字列表如下:%s" %quickSort(list))

if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        sys.stderr.write("退出")
        sys.exit(0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值