排序算法汇总(四)快速排序法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#之前的那个快速排序法符号太难看,不好理解,现在修正一下
def quickSort(arr, start, end):
    tmp = arr[start] #把列表的第一个元素用一个指针指着
    p1 = start   #p1,p2分别在一头一尾
    p2 = end
    if(start < end):
        while(p1 < p2):
            while(p1 < end and arr[p1] <= tmp):#找到比tmp大的元素停下来
                p1 += 1
            while(p2 >= start and arr[p2] > tmp):#找到不大于tmp的元素停下来
                p2 -= 1
            if(p1 < p2):
                arr[p1], arr[p2] = arr[p2], arr[p1]
        arr[p2], arr[start] = arr[start], arr[p2]#交换start位置和p2所指元素
        for i in range(len(arr)):
            print(arr[i], end = " ")
        print()

        quickSort(arr, start, p2-1)
        quickSort(arr, p2+1, end)
    else:
        return arr

arr = [26, 3, 38, 1, 67, 8, 55, 14, 43, 18]
print("初始数组顺序为:", arr)
# sortedArr = quickSort(arr, 0, len(arr)-1)
quickSort(arr, 0, len(arr)-1)
print("排序后的数组顺序为:", arr)
# print("排序后的数组顺序为:", sortedArr)

接下来打印出每次双指针遍历以后的排序结果以及最终的排序结果.
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值