zoukankan      html  css  js  c++  java
  • 冒泡算法

    核心思想:

    传入一个数组,程序从前往后比较,如果第一个元素比第二个元素大,则交换位置,否则保持不变.第三个元素比第二个元素大,则和第二个元素交换位置,依此类推.算法复杂度为:n的2次方,n为元素个数.是效率较为低下的一种算法.冒泡算法每次只是相邻元素交换位置.


    演示代码:(python)

    #-*- coding:utf-8 -*-

    #bubble sort
    def bubble(t):
        count = len(t)
        if count == 0:
            return t
        for i in xrange(count - 1):
            for j in xrange(count - 1 -i):
                # 进行该循环的目的在于确定当前元素和后面元素比较的次数
                # 第一次比较四个
                # 第二次比较三个
                # ...
                if t[j] > t[j+1]:
                    t[j], t[j+1] = t[j+1], t[j]
                
        return t

    lists = [2,5,1,8]
    print bubble(lists)

    # -----------------------------------------------------------------------
    # 第一趟排序,是从2开始依次和后面的5,1,8进行比较,根据大小或两两交换,或保持
    # 不变,结果为[2, 1, 5, 8],这是5和1交换的结果
    # 第二趟排序,是从2开始,依次和后面的5,1进行比较,8被排除在外,即这个泡已经冒
    # 到了最顶端,无需参与比较了,结果为[1,2,5,8]
    # 第三趟排序,是从1开始,和后面的2比较,5作为泡冒上去了,结果为[1,2,5,8]
    # 至此排序结束
    # -----------------------------------------------------------------------
  • 相关阅读:
    从0开始的Python学习013编写一个Python脚本
    Spring Cloud Eureka基本概述
    RocketMQ入门案例
    Quartz使用记录总结
    Spring Boot 1.5升级2.1 主要问题汇总
    Eureka客户端注册多网卡下IP选择问题
    Spring Security之动态配置资源权限
    代码规范问题
    Spring Security + OAuth系统环境搭建(一)
    Java并发编程之AQS
  • 原文地址:https://www.cnblogs.com/itfenqing/p/4429476.html
Copyright © 2011-2022 走看看