11.2 选择排序 | 您所在的位置:网站首页 › 什么叫选择排序法 › 11.2 选择排序 |
11.2 选择排序¶
选择排序(selection sort)的工作原理非常简单:开启一个循环,每轮从未排序区间选择最小的元素,将其放到已排序区间的末尾。 设数组的长度为 \(n\) ,选择排序的算法流程如图 11-2 所示。 初始状态下,所有元素未排序,即未排序(索引)区间为 \([0, n-1]\) 。 选取区间 \([0, n-1]\) 中的最小元素,将其与索引 \(0\) 处的元素交换。完成后,数组前 1 个元素已排序。 选取区间 \([1, n-1]\) 中的最小元素,将其与索引 \(1\) 处的元素交换。完成后,数组前 2 个元素已排序。 以此类推。经过 \(n - 1\) 轮选择与交换后,数组前 \(n - 1\) 个元素已排序。 仅剩的一个元素必定是最大元素,无须排序,因此数组排序完成。图 11-2 选择排序步骤 在代码中,我们用 \(k\) 来记录未排序区间内的最小元素: selection_sort.pydef selection_sort(nums: list[int]): """选择排序""" n = len(nums) # 外循环:未排序区间为 [i, n-1] for i in range(n - 1): # 内循环:找到未排序区间内的最小元素 k = i for j in range(i + 1, n): if nums[j] |
CopyRight 2018-2019 实验室设备网 版权所有 |