zoukankan      html  css  js  c++  java
  • 冒泡排序

    冒泡排序是最常见的一种排序算法,也是很简单的一种排序算法。

    相邻的元素进行两两比较,如果是升序则小的在左,大的在右;降序的话,反之。在经过数次比较循环,最终达到一个有序序列。

    冒泡排序最优时间复杂度为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))
     
  • 相关阅读:
    [GEF]实现模板功能
    一篇WTP文章
    写代码的代码:JET
    投票选择eclipse.org的新界面
    在SWT里显示AWT对象
    Plugin.xml > Manifest.mf
    关于本体编程的实现
    一个用OWLS组装Web服务的例子
    感受Ruby on Rails
    通过OCP考试
  • 原文地址:https://www.cnblogs.com/zhangweijie01/p/10229555.html
Copyright © 2011-2022 走看看