算法-冒泡排序
标签:顺序表 数列 mamicode bubble info 顺序 == span 最大
冒泡排序(bubble sort)
它重复地遍历要排序的数列,一次比较两个元素,如果他们顺序错误就把他们就把他们交换过来。遍历数列进行比较直到没有可以交换的为止。
冒泡排序算法的运作如下:
- 比较相邻的元素
- 对每一对比较的元素做同样的工作,从开始第一对到结尾最后一对。这步做完后,最后的元素会是最大的数。
- 针对所有元素重复以上步骤,除了最后一个。
- 持续每次对越来越少的元素重复到上面的步骤,直到没有任何一对数字需要比较。
冒泡排序交换过程图示
需要进行n-1次冒泡过程,每次对应的比较次数如下所示
def bubble_sort(alist):
"""冒泡排序, alist顺序表""" n = len(alist) for j in range(n - 1): count = 0 for i in range(0, n - 1 - j): if alist[i] > alist[i 1]: alist[i], alist[i 1] = alist[i 1], alist[i] count = 1 if 0 == count: return alist # for j in range(n-1, 0, -1): # for i in range(j): if __name__ == ‘__main__‘: li = [42, 23, 24, 53, 45, 646, 64] print(li) bubble_sort(li) print(li)
冒泡排序图例演示
时间复杂度
- 最优时间复杂度:O(n)
- 最坏时间复杂度:O(n^2)
- 稳定性:稳定
算法-冒泡排序
标签:顺序表 数列 mamicode bubble info 顺序 == span 最大
温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/biancheng/12249.html