选择排序是一种简单易懂的排序算法,它的基本思想是:
把列表分成两部分,一部分是已经排序好的,另一部分是未排序的。
在未排序的部分中找到最小(或最大)的元素,然后把它放到已排序部分的末尾。
重复这个过程,隐乱亮直到所有元素都被排序。
def xzpz(lst):
# lst是要排序的列表
# 获取列表的长度
n = len(lst)
# 遍历陪冲列表中除了最后一个元素以灶宽外的所有元素
for i in range(n - 1):
# 假设当前元素是最小的
min_index = i
# 遍历当前元素后面的所有元素
for j in range(i + 1, n):
# 如果发现有比当前元素更小的元素
if lst[j] <lst[min_index]:
# 更新最小元素的索引
min_index = j
# 如果最小元素不是当前元素,交换它们的位置
if min_index != i:
lst[i], lst[min_index] = lst[min_index], lst[i]
通过学习排序算法,发现冒泡排序和选择排序在算法实现上,十分的近似,下面进行必要的一些讲解:
让数组当中相邻的两个数进行比较, 数组当中比较小的数值向下沉,数值比较大的向上浮!外层for循环控制游羡循环次数,内层for循环控制相邻的两个元素进行比较。
将一个序列分为两部分, 前面是有序序列,后面是无序序列,不断的将后面的无序序列中的最小值添加到前面的有序序列中,直到后面的无序序列中没有值,开始的时候将第一个值作为有序序列。
由于冒泡排序中元素需要两两比较,所以要 遍历 所有元素, 冒牌排序算法,非常适用于寻找列表中最大值或者神枯拍,败大最小值 。
在选择排序中,我们也需要一轮轮的选出剩余的无需元素中的最小值,所以也要一次次的遍历无序列表, 非常契合的使用冒泡的思想去选出最小值 。
【结论】:看这两个算法其实思维不同,但是实现的编码过程十分一致。如果看程序看蒙了,其实也不要紧,思维上能明白两者的区别就行...
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)