排序算法-冒泡排序
2017-11-20 22:25
190 查看
冒泡排序
算法描述
冒泡排序的算法思想是:每次比较相临两个元素的值,若不符合顺序,则将两者交换;最终多次交换(第一遍循环)后,最大(最小)的元素沉淀到最后;然后针对剩余的前n-1个元素,再进行第二遍循环比较,最后将第二大(小)的元素沉淀到最后。持续照此过程,直到排序完成。算法实现(Python)
def Bubble(arr): for i in range(len(arr)-1,0,-1): for j in range(i): if arr[j]>arr[j+1]: arr[j],arr[j+1]=arr[j+1],arr[j] print arr if __name__=='__main__': arr=[7,4,9,2,5,1] Bubble(arr)
算法改进
上面这种算法存在一个缺点,即不管中间某次排序过程后,序列是否已经排好序,都要要进行n-1次循环比较。因此,会存在冗余的排序过程,增加了时间复杂度,改进如下(增加布尔变量flag):def Bubble(arr): flag=False for i in range(len(arr)-1,0,-1): for j in range(i): if arr[j]>arr[j+1]: arr[j],arr[j+1]=arr[j+1],arr[j] flag=True if not flag: break print arr if __name__=='__main__': arr=[7,4,9,2,5,1] Bubble(arr)
当某次循环过程中,一次值交换都没发生,说明序列已经排好序,则退出迭代过程。
算法复杂度
最坏情况:序列逆序,需要进行n*(n-1)/2次基础操作,时间复杂度为O(n^2)最好情况:序列顺序,需要进行n-1次基础操作,时间复杂度为O(n)
平均情况:时间复杂度为O(n^2)
相关文章推荐
- 排序算法(一):冒泡排序 Bubble Sort
- 排序算法---选择排序&堆排序&冒泡排序
- 排序算法-冒泡排序
- 基础排序算法(冒泡排序、选择排序、插入排序)
- 排序算法学习-冒泡排序
- 排序算法2:冒泡排序
- PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
- 排序算法·冒泡排序
- C#实现所有经典排序算法(选择排序 冒泡排序 快速排序)
- 排序算法--冒泡排序
- 排序算法(3):冒泡排序与快速排序
- 排序算法——交换排序(冒泡排序、快速排序)(java)
- 排序算法之冒泡排序
- 插入排序是基本排序算法中最好的一种,虽然插入排序也是需要O(N^2)时间,但它比冒泡排序快一倍,比选择排序还要快点。
- 常见的排序算法—冒泡排序
- 排序算法——冒泡排序
- 排序算法(一)简介与冒泡排序
- 【排序算法】冒泡排序原理及Java实现
- 排序算法——冒泡排序
- 排序算法:冒泡排序