冒泡排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序相关的知识,希望对你有一定的参考价值。

‘‘‘

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

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

例如[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]

以上是关于冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章

java冒泡排序法代码

python代码实现鸡尾酒排序(双向冒泡排序)

冒泡排序python代码

视频+图文+动画详解冒泡排序

交换排序(冒泡排序快速排序的算法思想及代码实现)

C语言冒泡排序。