level 15
for i=1 to 19
for j=1 to 20-i
if a(j)>a(j+1) then
t=a(j)
a(j)=a(j+1)
a(j+1)=t
endif
next j
next i
2019年11月09日 13点11分
2
为什么要20—i
2019年11月09日 13点11分
level 15
冒泡法的排序过程:
对未排序的数字进行一轮比较,每次比较两个相邻数字,如果顺序不符合排序要求(例如需要从小到大排列【即升序】,但前一个数大于后一个数),则交换这两个相邻数字;经过一轮比较之后,最大的数字(按照升序排列)即交换到了最后,因此每一轮比较可以排好一个数字
对本例来说,一共20个数字,第一轮对全部数字依次进行比较:第1个数与第2个数比较,第2个数与第3个数比较……第19个数与第20个数比较,因此共需比较19次(即20-1次);第一轮之后,排好了第20个数,剩余的前19个数进入第二轮比较,共需比较18次(即20-2次);因此,第i轮排序共需要20-i次比较
2019年11月09日 13点11分
3