码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡排序

时间:2019-09-07 00:38:07      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:原理   sort   random   交换   算法   大数   rand   依次   冒泡   

‘‘‘

冒泡算法的原理是经过每一轮的比较都能确定这一轮的最大数

所以到后面的比较次数都是依次少一

例如[3,4,9,1,5]
第一轮比较,比较4次
由于是有5个数,相邻的两个数两两比较,5个数需要比较4次,N个数,需要比较N-1次

3,4比较不用变
4,9比较不用变
9,1比较要交换位置 变成1,9
9,5比较需要交换位置,变成5,9
这样就完成了第一轮的比较,第一轮确定了列表的最大一位数为9,之后的比较就可以把9祛除了
再去比较其他的数就好了,应为既是是比较了,位置也是不会改变,浪费资源而已

经过第一轮的比较列表变成了[3,4,1,5,9],第二轮只需要比较三次
第二轮由于最后一个确定了,只需要比较三次就好了
3,4比较不用变
4,1比较需要交换,变成1,4
4,5比较,不用变,
由此我们确定了第二大的数是5
列表变成了[3,1,4,5,9]

第三轮比较,只需要比较两次
3,1比较需要交换,变成1,3
3,4比较不用改变,
列表变成了[1,3,4,5,9]

第四轮比较,只需要完成一次就行了
1,3比较不需要变化位置,

因此最终的列表为[1,3,4,5,9]
‘‘‘

from random import randint
l1 = [ randint(1,100) for _ in range(10)]
print(l1)
def dubbel_sort(arr):
    k = 0
    for i in range(len(arr) - 1):
        for j in range(len(arr) - 1 - i):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
                k +=1
    print(‘经过%s次的比较得出的结果‘%k)
    return arr

print(dubbel_sort(l1))
[90, 8, 55, 12, 71, 6, 72, 72, 60, 5]
经过25次的比较得出的结果
[5, 6, 8, 12, 55, 60, 71, 72, 72, 90]

冒泡排序

标签:原理   sort   random   交换   算法   大数   rand   依次   冒泡   

原文地址:https://blog.51cto.com/853056088/2436340

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!