alist = [1,5,0,9,2]–升序—[0,1,2,5,9]
思路:–相邻元素对比,大的值往后移
0- 每一次找一个较大值—需要找len(alist)-1
1- 第1次 9 -----对比len(alist)-1---4
1- [1,5,0,9,2]--1,5对比 5大,不需要交换 1 和5 位置
2- [1,5,0,9,2]--5,0对比 5大,需要交换 5 和0 位置 --[1,0,5,9,2]
3- [1,0,5,9,2]--5,9对比 9大,不需要交换 5 和9 位置
4- [1,0,5,9,2]--9,2对比 9大,需要交换 9 和2 位置 [1,0,5,2,9]
2- 第2次 5 ---对比len(alist)-2---3
1- [1,0,5,2,9] --1,0对比 1大,需要交换 1 和0 位置[0,1,5,2,9]
2- [0,1,5,2,9] --1,5对比 5大,不需要交换 1 和5 位置[0,1,5,2,9]
3- [0,1,5,2,9] --5,2对比 5大,需要交换5 和2 位置[0,1,2,5,9]
3- 第3次 2 ---对比len(alist)-3---2
1- [0,1,2,5,9] --0,1对比 1大,不需要交换 0 和1 位置[0,1,2,5,9]
2- [0,1,2,5,9] --1,2对比 2大,不需要交换 1 和2 位置[0,1,2,5,9]
4- 第4次 1------对比len(alist)-3---1
1- [0,1,2,5,9] --0,1对比 1大,不需要交换 0 和1 位置[0,1,2,5,9]
代码实现1:
def mysort(alist):
for i in range(0, len(alist) - 1): # 需要遍历的次数是所有元素的少一次,比如5个元素,去最大值,要比较4次
for j in range(0, len(alist) - i - 1): #每一个元素要遍历的次数
#只是交换次数,但是要不要交换取决于相邻值的大小
if alist[j] > alist[j + 1]: #如果前面大于后面的值,就换位置
alist[j], alist[j + 1] = alist[j + 1], alist[j]
return alist
结果:
print(mysort([1,5,10,8,9]))
代码实现2:
思路2:
- 创建一个新的列表newList
- 先找出所有元素中最小的,append在newList里面
- 再找出剩余的所有元素中最小的,append在newList里面
- 依次类推,直到所有的元素都放到newList里面
def mySort(inlist): # 定义一个列表变量
newlist = [] # 结果是一个新的列表变量
while len(inlist) > 0: # 只要inlist里面还有值,就执行循环
minData = inlist[0] # 假定第一个元素最小
minIndex = 0 # 第一个元素最小下标
idx = 0 # 当前元素的下标
for one in inlist: # 遍历这个列表
if minData > one: # 如果假定的最小值比其中一个大
minData = one # 交换值
minIndex = idx # 交换索引
idx += 1 # 每次遍历的时候索引都加1
newlist.append(minData) # 把找到的最小值追加到新的列表中
inlist.pop(minIndex) # 把老的列表中的元素删掉
return newlist
print(mySort([1, 9, 6, 5,89,2,4,656]))
结果:[1, 2, 4, 5, 6, 9, 89, 656]