冒泡排序(含python3代码)

冒泡排序
冒泡排序的英文Bubble Sort,是一种最基础的交换排序。
例:有8个数组成一个无序数列:5,8,6,3,9,2,1,7,希望从小到大排序。
按照冒泡排序的思想,我们要把相邻的元素两两比较,根据大小来交换元素的位置,过程如下:
1)首先让5和8比较,发现5比8要小,因此元素位置不变。
2)接下来让8和6比较,发现8比6要大,所以8和6交换位置。
3)继续让8和3比较,发现8比3要大,所以8和3交换位置。
4)继续让8和9比较,发现8比9要小,所以元素位置不变。
5)接下来让9和2比较,发现9比2要大,所以9和2交换位置。
6)接下来让9和1比较,发现9比1要大,所以9和1交换位置。
7)最后让9和7比较,发现9比7要大,所以9和7交换位置。
这样一来,元素9作为数列的最大元素,就像是汽水里的小气泡一样漂啊漂,漂到了最右侧。
这时候,我们的冒泡排序的第一轮结束了。数列最右侧的元素9可以认为是一个有序区域,有序区域目前只有一个元素。
重复以上过程。
原始的冒泡排序是稳定排序。由于该排序算法的每一轮要遍历所有元素,轮转的次数和元素数量相当,所以时间复杂度是O(N^2) 。

代码:
>>import random
>>#定义冒泡排序函数
>>def bubble_sort(array):
    for i in range(len(array)):            #外循环,每循环一次使得有序的数增加一个
        indicator = False            #设置指示器,没有交换时表示array已经有序,用于结束循环
        for j in range(len(array)-1-i):        #内循环,每循环一次将无须数中最大数提取
            if array[j] > array[j+1]:
                array[j], array[j+1] = array[j+1], array[j]
                indicator = True
        if not indicator:            #没有交换时,结束循环
            break

>>#验证算法
>>array = random.sample(range(100), 10)            #随机取得10个数字
>>print(array)                         #排序前
>>bubble_sort(array)                    #调用冒泡排序函数
>>print(array)                        #排序后

你可能感兴趣的:(冒泡排序(含python3代码))