每天努力一点点,坚持下去 ------ 博客首页

冒泡算法

冒泡算法:说白了就是通过循环来把相邻的两个数字进行对比,对比过后进行调换

l = [2,5,12,352,1,23,35,63,5,2] #
for i in range(len(l)-1): #这个是控制总共需要多少趟,需要循环N-1趟
    for j in range(len(l)-1-i):
#这个循环是控制交换的,减1是最后一位不用对比,下面2就没有了,没有【j+1】的下标,减i是每次循环都会有一位是排序好了,可以少循环一次
        if l[j] > l[j+1]: #相邻的对比
            l[j],l[j+1] = l[j+1],l[j]  #相邻的交换
print(l)

结果:[1, 2, 2, 5, 5, 12, 23, 35, 63, 352]

 

#【优化版】
count = 1                                                                                  
num = [30, 66, 70, 57, 83, 68, 55, 34, 18, 23, 19, 13, 37, 2, 88, 24, 89, 71, 46, 98]      
for i in range(len(num)-1):                                                                
    for j in range(len(num)-1-i):                                                          
        if num[j+1] > num[j]:                                                              
            num[j],num[j+1] = num[j],num[j+1]                                              
        else:                                                                              
            num[j],num[j+1] = num[j+1],num[j]                                              
            count+=1                                                                       
print(num)                                                                                 
print(count)                                                                               

 

posted @ 2020-05-03 17:08  他还在坚持嘛  阅读(200)  评论(0编辑  收藏  举报