写点什么

选择排序 & 插入排序 - DAY 15

用户头像
Qien Z.
关注
发布于: 2021 年 05 月 25 日
选择排序&插入排序 - DAY 15

选择排序

# 等待排序的列表arr = [14, 3, 16, 77, 24, 74, 113, 986]

# 使用选择排序的思想,对列表中的元素进行排序for i in range(len(arr)):
min_idx = i for j in range(i + 1, len(arr)): if arr[min_idx] > arr[j]: min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
print("数字从小到大排序:" + str(arr))
复制代码


#输出结果数字从小到大排序:[3, 14, 16, 24, 74, 77, 113, 986]
复制代码

这是 n=8 的数列,在排序的过程中,最多发生 n-1 次的元素位置交换,只有在外循环时才会发生一次位置交换,但是内循环的俩俩比较是不会发生位置交换的。


插入排序

插入排序可以看做是有序和无序两个部分。例如, 先从数列中拿出一个元素,那么这个元素可以看做是有序列表,其它的是无序列表,然后从无序列表中取出一个元素,放入有序列表中进行比较,然后再进行排序,那么,这就变成了有序列表中的元素了,以此类推,直到元素排序完毕。

# 未排序列表arr = [13, 22, 63, 125, 35, 27, 67]

# 使用插入排序的思想,对列表中的元素进行排序for i in range(1, len(arr)):
key = arr[i]
j = i - 1 while j >= 0 and key < arr[j]: arr[j + 1] = arr[j] j -= 1 arr[j + 1] = keyprint("数字从小到大排序:" + str(arr))
复制代码


#输出数字从大到小排序:[13, 22, 27, 35, 63, 67, 125]
复制代码


发布于: 2021 年 05 月 25 日阅读数: 6
用户头像

Qien Z.

关注

Everything is all 2020.04.10 加入

接受反驳&不接受被定义

评论

发布
暂无评论
选择排序&插入排序 - DAY 15