Python中的快速排序实现

快速排序的思想:

1.选取一个数字作为基准,可选取末位数字

2.从列表第一位开始,依次与此数字比较,如果小于此数,将小数交换到左边,最后达到小于基准数的在左边,大于基准数的在右边,分为两个列表

3.分别对两个列表重复上述步骤

代码实现:

def quick_sort(list, start, end):
    # 判断low是否小于high,如果为false,直接返回
    if start < end:
        i,j = start,end
        #设置基准数 
       base = list[i]
        while i < j:
            #如果列表后边的数,比基准数大或相等,则前移一位直到有比基准数小的数出现
            while (i < j) and (list[j] >= base):
                j = j - 1
            # 如找到,则把第j个元素赋值给第i个元素,此时表中i,j个元素相等
            list[i] = list[j]
            # 同样的方式比较前半区
            while (i < j) and (list[i] <= base): 
               i = i + 1 
               list[j] = list[i] 
          # 做完第一轮比较之后,列表被分成了两个半区,并且i=j,需要将这个数设置回base 
          list[i] = base
          # 递归前后半区
          quick_sort(list, start, i - 1)
          quick_sort(list, j + 1, end)
    return list
list1 = [47, 35, 65, 87, 72, 15, 2, 50]
print("快速排序: ")
quick_sort(list1, 0, len(list1) - 1)
print(list1)复制代码


转载于:https://juejin.im/post/5cb0ac5d5188251b0e4e362f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值