选择排序 Python实现
选择排序是一种简单直观的排序算法,通过重复选择未排序部分的最小元素并放置到已排序部分的末尾。以下是详细的实现和说明:
选择排序步骤
-
初始化:将数组分为已排序(左)和未排序(右)两部分。初始时,已排序部分为空。
-
查找最小值:遍历未排序部分,找到最小元素的索引。
-
交换元素:将最小元素与未排序部分的第一个元素交换,将其纳入已排序部分。
-
重复:重复上述步骤,直到所有元素排序完成。
Python 实现
python
复制
下载
'''
选择排序算法
'''
def find_smallest(arr):smallest = arr[0]smallest_index = 0for i in range(1, len(arr)):if arr[i] < smallest:smallest = arr[i]smallest_index = ireturn smallest_indexarr = [5, 3, 6, 2, 10]
# print(find_smallest(arr))def selection_sort(arr):new_arr = []for i in range(len(arr)):smallest = find_smallest(arr)new_arr.append(arr.pop(smallest))return new_arrprint(selection_sort(arr))
示例
输入数组:[64, 25, 12, 22, 11]
排序过程:
-
第1轮:找到最小值11,交换后 →
[11, 25, 12, 22, 64]
-
第2轮:找到最小值12,交换后 →
[11, 12, 25, 22, 64]
-
第3轮:找到最小值22,交换后 →
[11, 12, 22, 25, 64]
-
第4轮:找到最小值25(已在位),数组不变。
特性
-
时间复杂度:O(n²)(无论最好/最坏情况)。
-
空间复杂度:O(1)(原地排序)。
-
稳定性:不稳定(可能改变相同元素的相对位置)。
适用场景
-
小规模数据。
-
对内存使用要求严格。
-
交换成本较高时(如元素为复杂对象)。
选择排序的核心思想是逐步确定元素的位置,虽然效率不高,但代码简单易懂,适合教学或简单应用场景。