python算法与数据结构-冒泡排序算法

python算法与数据结构-冒泡排序算法

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

冒泡排序(英语:bubble sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢”浮”到数列的顶端。

python算法与数据结构-冒泡排序算法

python算法与数据结构-冒泡排序算法

python算法与数据结构-冒泡排序算法

代码如下所示:

# coding:utf-8

def bubble_sort(alist):

    """冒泡排序"""

    n = len(alist)

    #第一种不考虑效率的排序

    # for j  in range(0,n-1):

    #     #     for i in range(0,n-1):

    #     #         if alist[i] > alist[i+1]:

    #     #             alist[i],alist[i+1] = alist[i+1],alist[i]

    #第二种考虑效率的排序

    for in range(n-1): #下面一行跟这行写法一样

    #for j in range(0, n - 1):

        #print(n-1)  # 输出8个8

        #print(j)  #输出从0到7  这个j值等于0,对应i值的01234567

        #这个j值等于1,对应i值的0123456

        count = 0

        for i in range(0,n-1-j):

            #print(i) #01234567   0123456 012345依次类推  01 0

            if alist[i] > alist[i+1]:

                alist[i],alist[i+1] = alist[i+1],alist[i]

                count += 1

        #     print(i)

        # return

        if 0 == count:

            return

if __name__ == "__main__":

     li = [54,26,93,17,77,31,44,55,20]

     print(li)

     bubble_sort(li)

     print(li)

"""

res:

[54, 26, 93, 17, 77, 31, 44, 55, 20]

[17, 20, 26, 31, 44, 54, 55, 77, 93]

"""

参考资料:

网上的教程