排序方法(一)
冒泡法是一种非常简单的排序方法,如下代码是将数组中数字按照从小到大的顺序排列
如同水中的气泡一样,通过同相邻数字之间进行比较,大的数字会漂浮到数组的最末端
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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()
冒泡法的时间复杂度为O(n2)
假设数组的长度为n, 冒泡法需要两层循环嵌套,外层循环进行n - 1次比较,内层循环进行n - 1次比较,
每次循环进行一次比较,最坏的情况下每次循环都要进行一次交换。