选择排序算法详解
简介
选择排序是一种简单直观的排序算法,在所有排序算法中效率比较低,但是易于实现。
该算法的基本思想是在未排序的数列中找到最小的元素,然后把它放到数列的起始位置,再从剩余的未排序的元素中继续寻找最小的元素,然后放到已排序序列的末尾,以此类推,直到完成所有的排序操作。
步骤
-
首先在未排序序列中找到最小元素,存放到排序序列的起始位置。
-
接着,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。
-
重复第二步,直到所有元素均排序完毕。
代码实现
以下是选择排序算法的Python代码实现:
def selection_sort(arr):
n = len(arr)
for i in range(n):
# 在剩余未排序元素中寻找最小元素的索引
min_idx = i
for j in range(i+1, n):
if arr[min_idx] > arr[j]:
min_idx = j
# 交换最小元素和当前元素
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
示例说明
示例 1
输入:[5, 2, 3, 1, 4]
输出:[1, 2, 3, 4, 5]
解释:
执行选择排序算法的过程如下:
-
找到最小元素1,并放置序列起始位置,序列变为[1, 2, 3, 5, 4]。
-
找到最小元素2,并放置序列第二个位置,序列变为[1, 2, 3, 5, 4]。
-
找到最小元素3,并放置序列第三个位置,序列变为[1, 2, 3, 5, 4]。
-
找到最小元素4,并放置序列第四个位置,序列变为[1, 2, 3, 4, 5]。
-
找到最小元素5,并放置序列第五个位置,排序完成。
示例 2
输入:[9, 1, 5, 8, 3, 7, 4, 6, 2]
输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]
解释:
执行选择排序算法的过程如下:
-
找到最小元素1,并放置序列起始位置,序列变为[1, 9, 5, 8, 3, 7, 4, 6, 2]。
-
找到最小元素2,并放置序列第二个位置,序列变为[1, 2, 5, 8, 3, 7, 4, 6, 9]。
-
找到最小元素3,并放置序列第三个位置,序列变为[1, 2, 3, 8, 5, 7, 4, 6, 9]。
-
找到最小元素4,并放置序列第四个位置,序列变为[1, 2, 3, 4, 5, 7, 8, 6, 9]。
-
找到最小元素5,并放置序列第五个位置,序列变为[1, 2, 3, 4, 5, 7, 8, 6, 9]。
-
找到最小元素6,并放置序列第六个位置,序列变为[1, 2, 3, 4, 5, 6, 8, 7, 9]。
-
找到最小元素7,并放置序列第七个位置,序列变为[1, 2, 3, 4, 5, 6, 7, 8, 9]。
-
找到最小元素8,并放置序列第八个位置,序列变为[1, 2, 3, 4, 5, 6, 7, 8, 9]。
-
找到最小元素9,并放置序列第九个位置,排序完成。
总结
选择排序虽然简单易懂,但其时间复杂度为O(n^2),不适合处理大量数据的排序。对于排序性能要求高的场景,应该使用快速排序、归并排序等算法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解选择排序算法原理与使用方法 - Python技术站