排序方法(一)

冒泡法是一种非常简单的排序方法,如下代码是将数组中数字按照从小到大的顺序排列

如同水中的气泡一样,通过同相邻数字之间进行比较,大的数字会漂浮到数组的最末端

 1 '''
 2 To sort a list from smallest to biggest
 3 '''
 4 def bubble_sort(nb_list):
 5     '''
 6     >>> bubble_sort([1,5,3,2,4])
 7     [1, 2, 3, 5, 4]
 8     '''
 9     water_surface = len(nb_list) - 1
10     while water_surface:
11         for e_num in range(water_surface - 1):
12             if nb_list[e_num] > nb_list[e_num + 1]:
13                 nb_list[e_num], nb_list[e_num + 1] = nb_list[e_num + 1], nb_list[e_num]
14         water_surface -= 1
15     return nb_list
16 
17 
18 if __name__ == '__main__':
19     import doctest
20     doctest.testmod()
Bubble_sort

冒泡法的时间复杂度为O(n2)

假设数组的长度为n, 冒泡法需要两层循环嵌套,外层循环进行n - 1次比较,内层循环进行n - 1次比较,

每次循环进行一次比较,最坏的情况下每次循环都要进行一次交换。

posted @ 2018-05-24 21:52  AcodingDog  阅读(131)  评论(0编辑  收藏  举报