冒泡就是重复地遍历要排序的数列,一次比较两个元素(泡泡),如果他们的顺序错误就把他们交换过来,像泡泡一样,依次按照顺序上升排列。
冒泡排序算法的运作如下:
- 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
写了三种冒泡,大同小异,差不多都一样昂,这应该是注释最多的冒泡排序了吧O(∩_∩)O哈哈~
1 ##第一种冒泡## 2 a=[2,9,4,1]#列表 3 n=len(a)#a的列表元素长度.n=4 4 for i in range(n-1):#外循环,控制循环轮数,n-1是索引从0开始取的。(n-1=3) 5 for j in range(n-i-1):#内循环控制元素循环次数(n-i-1=3) 6 if a[j]>a[j+1]:#j=0,j+1=1,如果a[0]>a[0+1] 7 a[j],a[j+1]=a[j+1],a[j]#复合赋值,如果满足条件则进行调换 8 print(a) 9 ##第二种冒泡## 10 a=[2,9,4,1]#列表 11 n=len(a)#a的列表元素长度.n=4 12 for i in range(n-1):#外循环,控制循环轮数,n-1是索引从0开始取的。(n-1=3) 13 for j in range(n-i-1):#内循环控制元素循环次数(n-i-1=3) 14 if a[j]>a[j+1]:#j=0,j+1=1,如果a[0]>a[0+1] 15 #这种调换方式比较麻烦些,不像上一个一步到位 16 jj = a[j + 1]#把a[j+1]赋值给jj 17 a[j + 1] = a[j]#然后再把a[j]赋值给a[jz=1] 18 a[j] = jj#然后再把jj赋值给a[j] 19 print(a) 20 ##第三种冒泡## 21 aa = [2,9,4,1] 22 def sort(aa):#定义一个函数 23 print('排序前:') 24 print(aa) 25 for i in range(len(aa)-1):#len(aa)#得出aa的元素长度 26 for j in range(len(aa)-1-i):#剩下的就给上面的一样了 27 if aa[j]>aa[j+1]: 28 aa[j],aa[j+1]=aa[j+1],aa[j] 29 print('第{}次排序后:'.format(i+1))#用到了format函数 30 print(aa) 31 sort(aa) 32 print('排序后:') 33 print(aa)
最后来个直接排序的函数,一招制敌。
aa = [2,9,4,1]
aa.sort(reverse=False)#sort直接排序函数,True 降序,False 升序(默认)。
print(aa)