选择排序
简介
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
以上介绍出自360百科
例子
对列表[5,3,6,2,10]进行选择排序
代码
# 升序排列
# 定义函数findsmallest()查找列表中的最小元素
def findsmallest(list):
# 初始化列表中第一个元素为最小元素
smallest = list[0]
smallest_index = 0
# 遍历整个列表,寻找最小值
for i in range(1, len(list)):
if list[i] < smallest:
smallest = list[i]
smallest_index = i
return smallest_index
# 定义函数selection_sort1() 进行选择排序(升序)
def selection_sort1(list):
# 初始化一个新的空的列表
newlist = []
# 将原列表中的每个最小的元素依次放入新的列表中
for i in range(len(list)):
smallest_index = findsmallest(list)
newlist.append(list.pop(smallest_index)) # 将list中的smllest_index元素去除,加到newlist
return newlist
# 测试
a = selection_sort1([5, 3, 6, 2, 10])
print(a)
# 降序排列
# 定义函数findsmax()查找列表中的最大元素
def findmax(list):
max = list[0]
max_index = 0
for i in range(1, len(list)):
if list[i] > max:
max = list[i]
max_index = i
return max_index
# 定义函数selection_sort2() 进行选择排序(降序)
def selection_sort2(list):
newlist = []
# 将原列表中的每个最大的元素依次放入新的列表中
for i in range(len(list)):
max_index = findmax(list)
newlist.append(list.pop(max_index))
return newlist
# 测试
a = selection_sort2([5, 3, 6, 2, 10])
print(a)
笔记
在list中添加元素有四种方法
(1)使用append在list尾部添加一个元素
a=[1,2,3]
a.append(5)
print(a)
输出结果为:[1,2,3,5]
(2)使用extend将一个list添加到另一个list后面
a=[1,2,3]
b=['q','w','e']
a.extend(b)
print(a)
输出结果为:[1, 2, 3, 'q', 'w', 'e']
(3)使用insert将一个元素插入到指定位置
a=[1,2,3]
a.insert(1,'b')
print(a)
输出结果为:[1, 'b', 2, 3]
(4)使用“+”来将两个list进行相加
a=[1,2,3]
b=[4,5,6]
c=a+b
print(c)
输出结果为:[1, 2, 3, 4, 5, 6]
从这四种方法中可以看到前三种都是改变了原来的list,而第四种原来的list不变,生成一个新的list