
回复
简介
选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完成。
算法实现步骤
Python 代码实现
# selection_sort 代码实现
from typing import List
def selection_sort(arr: List[int]):
"""
选择排序
:param arr: 待排序的List
:return: 选择排序是就地排序(in-place)
"""
length = len(arr)
if length <= 1:
return
for i in range(length):
min_index = i
min_val = arr[i]
for j in range(i, length):
if arr[j] < min_val:
min_val = arr[j]
min_index = j
arr[i], arr[min_index] = arr[min_index], arr[i]
# 测试数据
if __name__ == '__main__':
import random
random.seed(54)
arr = [random.randint(0,100) for _ in range(10)]
print("原始数据:", arr)
selection_sort(arr)
print("选择排序结果:", arr)
# 输出结果
原始数据: [17, 56, 71, 38, 61, 62, 48, 28, 57, 42]
选择排序结果: [17, 28, 38, 42, 48, 56, 57, 61, 62, 71]
算法分析
而移动次数与初始排序状态有关,当初始为顺序时,移动次数最少为0。当初始为逆序时,移动次数最多为:
所以,选择排序的时间复杂度为O(n2)。