选择排序 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)(原地排序)。 
-  稳定性:不稳定(可能改变相同元素的相对位置)。 
适用场景
-  小规模数据。 
-  对内存使用要求严格。 
-  交换成本较高时(如元素为复杂对象)。 
选择排序的核心思想是逐步确定元素的位置,虽然效率不高,但代码简单易懂,适合教学或简单应用场景。
