题目描述
用冒泡排序法对n个整数从小到大排序。
上浮式冒泡排序:是在一系列数据中对相邻两个数依次进行比较和交换,让较小的数“上浮” 的一种排序技术。每遍冒泡都是从最下面一个元素起,自下而上地比较相邻的两个数,把较小的数换到本遍的顶端位置。
加工遍数的优化:
若在某一遍排序中没有数据交换,说明待排序数据都已经有序,冒泡排序过程可在此遍排序后终止。因此可以引入一个逻辑变量flag,记录在每遍排序过程中是否发生了交换,每遍排序结束时检查flag,若未发生过交换则终止排序。

加工次数的优化:
在每遍冒泡过程中,若最后一次交换的是last与last-1位置的数,则last位置之前的相邻数据均已有序。进行下一遍冒泡时,无序区域设置为[last,n),这样一遍排序可能使当前无序区域缩小。
python程序:
n=int(input()) a=list(map(int,input().split())) flag=True last=0 while flag==True: ___ ①___ for j in range(n-1,last,-1): if ___②___: a[j],a[j-1]=a[j-1],a[j]#交换两个数的位置,使小数上浮 flag=True last=__③__ for i in a: print(i)