首页 飞桨领航团 帖子详情
AI达人养成营 快速排序笔记
收藏
快速回复
飞桨领航团 文章AI达人创造营 966 0
AI达人养成营 快速排序笔记
收藏
快速回复
飞桨领航团 文章AI达人创造营 966 0

注释里对快速排序过程的理解

########快速排序##############
def quick_sort(nums, left, right):
    if left < right:
        i = left
        j = right
        # 取第一个元素为枢轴量
        pivot = nums[left]#取中心值,为了方便每次默认最左边一个数为中心数
        while i != j:#左右下标不相等就一直循环,直到左右下标重合
            # 交替扫描和交换
            # 从右往左找到第一个比枢轴量小的元素,交换位置
            while j > i and nums[j] > pivot:
                j -= 1
            if j > i:
                # 如果找到了,进行元素交换
                nums[i] = nums[j]
                i += 1
            # 从左往右找到第一个比枢轴量大的元素,交换位置
            while i < j and nums[i] < pivot:
                i += 1
            if i < j:
                nums[j] = nums[i]
                j -= 1
        # 至此完成一趟快速排序,枢轴量的位置已经确定好了,就在i位置上(i和j)值相等
        nums[i] = pivot
        # 以i为枢轴进行子序列元素交换
        quick_sort(nums, left, i - 1)
        quick_sort(nums, i + 1, right 

 

0
收藏
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户