冒泡排序
冒泡排序是最常见的一种排序算法,也是很简单的一种排序算法。
相邻的元素进行两两比较,如果是升序则小的在左,大的在右;降序的话,反之。在经过数次比较循环,最终达到一个有序序列。
冒泡排序最优时间复杂度为O(n),最坏时间复杂度为O(n**2)
冒泡排序的原理可以种一张图来解释。
首先是相邻的元素进行两两比较,比较次数是无序队列的元素个数-1,如果左右相等数据不进行交换位置(冒泡排序是稳定排序),冒泡次数同样为无序队列元素个数-1。
def dubblesort(alist): n=len(alist) if n<=1: return alist # 冒泡排序循环范围 for i in range(n-1,0,-1): count=0 # 内层数据比较循环范围 for j in range(i): if alist[j]>alist[j+1]: alist[j],alist[j+1]=alist[j+1],alist[j] count+=1 # 如果本次循环比较结束以后,计数器 count 还是0,说明本次比较循环并没有元素交换,也就证明列表已经有序,直接终止循环 if count==0: break return alist if __name__ == '__main__': alist=[2,41,31,54,90,21,1] print(dubblesort(alist))