Python排序算法:冒泡排序

冒泡排序,由一头先出现最大值,逐渐向另一端扩展



什么是冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复遍历要排序的数列,一次比较两个元素,按大小值顺序排序,直到没有需要交换,则该数列排序完成。越小的元素经过交换后会慢慢”浮”到数列顶端,故称“冒泡排序”。

冒泡排序的过程:
- 1、比较相邻元素,按升序规则交换两者顺序;
- 2、对每一对相邻元素做同样工作,从第一对到结尾的最后一对。结束后最后的元素会是最大的数;
- 3、针对所有元素重复上述步骤,除了最后一个。
- 4、再除去上一轮的最后一个最大元素,继续重复步骤,直到所有都比较完成;

代码实现

#冒泡排序

def bubble_sort(list):
    n = len(list)
    for i in range(n-1):
        count = 0              #记录一轮比较换位了多少次
        for j in range(0,n-1-i):
            if list[j] > list[j+1]:
                #list[j],list[j+1] = list[j+1],list[j]
                tmp = list[j]
                list[j] = list[j+1]
                list[j+1] = tmp
                count +=1
        if count == 0:       #比较了一轮没有一次换位操作,则排序完成
            break
    print(list)

b = [1,8,3,6,4,9,0,2]
a = bubble_sort(b)

>> [0, 1, 2, 3, 4, 6, 8, 9]

步骤解析

首先:定义函数 bubble_sort,输入参数 list

第二步:判断列表长度,列表有n个元素,就要遍历n-1次

第三步:开始第一次遍历,在末尾排出最大数,两两比较要比较n-1次

第四步:每一轮的遍历都使用 count 计数,如果count 计数为 0 ,则说明该次比较的所有数排列均为升序,则排序完成

n个数,遍历n-1次,每次结束末尾都排出了该次遍历的最大值
所以下次遍历的时候,末尾的数就不用参与比较了
所以第一轮比较,n个数需要比较n-1
第二轮比较,比较n-1-1
第三轮比较,比较n-1-2
第四轮比较,比较n-1-3
···

猜你喜欢

转载自blog.csdn.net/weixin_42026630/article/details/80378112