AI达人养成营 快速排序笔记
收藏
注释里对快速排序过程的理解
########快速排序############## 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
收藏
请登录后评论