zoukankan      html  css  js  c++  java
  • python-冒泡排序,升序、降序

    冒泡排序

    这个算法的名字由来是因为越大的元素会经交换慢慢浮’到数列的顶端。

    冒泡排序的基本思想:重复走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,直到没有再需要交换,完成排序。

    冒泡排序总的平均时间复杂度为O(n2)。

    冒泡排序的编程思想有两种,浮上去和沉下来。

    冒泡排序原理: 每一趟只能将一个数归位, 如果有n个数进行排序,只需将n-1个数归位, 也就是说要进行n-1趟操作(已经归位的数不用再比较)

    #coding:utf-8
    
    class Sort(object):
        #数字大的沉下去
        def bubble_sortdown(self, nums):
            count = len(nums)
            for i in range(count-1):
                for j in range(count-1-i):
                    if nums[j] > nums[j+1]:
                        nums[j], nums[j+1] = nums[j+1], nums[j]
            print 'bubble_sortdown1:',nums
    
        #数字大的浮上去,即数字小的沉下去
        def bubble_sortup(self, nums):
            count = len(nums)
            for i in range(count):
                for j in range(count-1-i):
                    if nums[j] < nums[j+1]:
                        nums[j], nums[j+1] = nums[j+1], nums[j]
            print 'bubble_sortup:', nums
    
        def bubble_sortup2(self, nums):
            count = len(nums)
            for i in range(1, count):
                for j in range(1, count-i + 1):
                    if nums[j-1] < nums[j]:
                        temp = nums[j-1]
                        nums[j-1] = nums[j]
                        nums[j] = temp
            print 'bubble_sortup2:', nums
    
        def bubble_sortup3(self, nums):
            count = len(nums)
            for i in range(count-1):
                for j in range(count-1-i,0,-1):
                    if nums[j-1] < nums[j]:
                        nums[j-1], nums[j] = nums[j], nums[j-1]
            print 'bubble_sortup3:',nums
    
    
    if __name__ == '__main__':
        sor = Sort()
        nums = [5,6,4,2,3]    #要排序的列表
        sor.bubble_sortdown(nums) #冒泡排序 沉  123456
        sor.bubble_sortup(nums) #冒泡排序 浮  654321
        sor.bubble_sortup2(nums) #冒泡排序 浮  654321
        sor.bubble_sortup3(nums)  #冒泡排序 浮  654321

     参考:

  • 相关阅读:
    canvas绘图详解-10-文字渲染
    canvas绘图详解-09-曲线的绘制原理
    websocket,vue链接
    JS 数组对象根据某一相同key合并成新的数组
    nuxt $axios访问多个服务器地址请求数据
    正则去除字符串中的html标签,但不去除<br>标签
    css多行文本溢出显示省略号(兼容ie)
    input accept
    jquery.toast
    jquery toast
  • 原文地址:https://www.cnblogs.com/yiyezhouming/p/6825640.html
Copyright © 2011-2022 走看看