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

     参考:

  • 相关阅读:
    oc-autorelease
    oc-循环引用问题
    oc-内存管理总结
    tomcat-各文件夹作用解析
    oc-多对象内存管理
    oc-arc(Automatic Reference Counting 自动引用机制) 与 内存管理
    tomcat-context.xml
    oc-set方法内存管理 和 @property的参数
    【转载】java学习线路
    一段shell脚本
  • 原文地址:https://www.cnblogs.com/yiyezhouming/p/6825640.html
Copyright © 2011-2022 走看看