python学习2-数据结构与算法-十大排序-2.快速排序(交换排序)

快速排序(选择排序)
快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

算法:
1.将比index值小的放到左边,比index值大的放到右边;
2.递归比较,直至所有都排序完成

python代码:
def quickSort(nums,left,right):
    #递归退出条件
    if left>=right:
        return 
    #设置起始的基准元素值
    mid = nums[left]
 
  #low为序列左边,在开始位置的由左向右移动的游标
    low = left
   
#high为序列右边,在开始位置的由右向左移动的游标
    high = right
    while low < high:
        while low <high and nums[high] >= mid:
            high -= 1
        nums[low] = nums[high]
       
#走到此位置时high指向一个比基准元素小的元素,将high指向的元素放到low的位置上,此时high指向的位置空着,接下来移动low找到符合条件的元素放在此处
        # 如果low与high未重合,low指向的元素比基准元素小,则low向右移动

        while low < high and nums[low]<mid:
            low += 1
        nums[high] = nums[low]
       
 # 此时low指向一个比基准元素大的元素,将low指向的元素放到high空着的位置上,此时low指向的位置空着,之后进行下一次循环,将high找到符合条件的元素填到此处

    # 退出循环后,low与high重合,此时所指位置为基准元素的正确位置,左边的元素都比基准元素小,右边的元素都比基准元素大
    nums[low] = mid
    quickSort(nums,left,low-1)
    quickSort(nums,low+1,right)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值