定义:
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名“冒泡排序”。
习题:
把列表[1,3,5,2,4,7]用冒泡法按升序排好
list=[1,3,5,2,4,7]
length=len(list)
for i in range(length):
for j in range(length-1-i):
if list[j]>list[j+1]:
list[j],list[j+1]=list[j+1],list[j]
print(list)
解析:
冒泡法是最基本的算法之一,相对也较为简单,即为列表内的元素两两相比,按升序的话则前者大于后者的话将前者放于后者之后,以此类推.因而我们发现需要比较length-1次才能把所有元素按升序排好,而我们需要比较的次数越来越少,所以后面有了for j in range(length-1-i)的循环,之后按照冒泡法理解即可.
list(j),list(j+1)=list(j+1),list(j) 可以解释为
tmp=list(j)
list(j)=list(j+1)
lst(j+1)=tmp