排序算法之选择排序(python实现)
一、选择排序
思想:在待排序的一组数据中,选出最小(最大)的一个数与第一个位置的数交换。
然后在剩下的数中,再找最小(最大)的数与第二个位置的数交换位置。
依次类推直到第 n-1 个元素与第 n 个元素交换位置,选择排序结束。
动图如下:
二、python实现
代码如下(示例):
items = [10, 4, 5, 1, 3, 9, 7]
def selectionSort(items):
item = items.copy() # 浅复制
number = len(item)
while number > 0:
Max = item[0] # 保存最大的数值
Maxid = 0 # 记录最大值的索引,方便与最后位的数进行交换
for i in range(1,number): # 通过for循环找出最大值,其实python列表结构中自带了最大与最小值的索引,这里还费事的重写一遍的目的还是为了算法思维的训练
if Max < item[i]:
Max = item[i]
Maxid = i
temp = item[number-1]
item[number-1] = Max
item[Maxid] = temp
number = number - 1
return item
print('选择排序已完成!',selectionSort(items)) # 选择排序已完成! [1, 3, 4, 5, 7, 9, 10]
print(items) # [10, 4, 5, 1, 3, 9, 7]
时间复杂度: O(N^2)
空间复杂度: O(1)