本文以列表 li=[6,7,4,3,1,4] 作为排序对象,在不调包前提下用四种方法实现列表数值从小到大的排序
(I) Bubble Sort冒泡排序
核心原理:先找到最大值放在列表最后位置,再找到最后一个位置前的列表中的最大值(即总列表中第二大的值)放在倒数第二的位置...不断从当前列表的第一个值开始往后挨个挨个比较、调序,找到第i个最大的值,直到列表的第一个值就是整个列表的最小值,即第n个最大值
如何寻找每一个'最大值'?——从列表中第一个数开始依次取列表中的值和其后面相邻的数两两比较,如果大于后面的数,则和后面的数交换位置,这样挨个挨个地后移并与相邻的后续一个进行比较,以此保证把列表中最大的值放在序列中最后的位置。这样确定下来的放在末尾的值在后续不再需要变动其位置,所以从列表第一个值开始比较遍历的范围也不再需要延伸到后面,所以挨个挨个比较的起点虽然不变(列表当前的第一个位置),但是终点一直在靠前(第i次遍历在第n-i+1数终止,后面的已经是前面遍历确定了的最大值们)。
'''===============================#1 bubble sort 难度⭐⭐=================================================='''
#原理:从左到右依次遍历比较大小,调换位置把大的放在后面。以此找到最大的值并放在最后的位置,找到倒数第二个最大的值放在倒数第二...
def sort1(li):
for j in range(len(li)-2): #依次把第j位置上的数与它后面的数比较大小
for i in range(len(li)-1-j): #末尾已经确定为序列中最大、第二大...的不再需要改动位置
if li[i]>li[i+1]:
temp=li[i+1] #向后两两比较时,调换顺序把较大的值放在后面
li[i+1]=li[i]
li[i]=temp
return li
sort_li=sort1([6,7,4,3,1,4])
print(sort_li)
'''=====================================================&#