zoukankan      html  css  js  c++  java
  • 算法 列表排序

    算法

    1.什么是算法

    一个计算过程,解决问题的方法。

    2.时间复杂度

    用来评估算法运行效率的(代码运行的大该次数)

     

    3.空间复杂度

    用来评估算法内存占用大小的式子

    冒泡排序

    1.思路

    列表每两个相邻的数,如果前边的比后边的大,那么就交换这两个数的位置。每圈的次数里少排一个。

    2.代码实现

    #### 冒泡排序  (************************)
    ### 时间复杂度:O(n^2)
    ###圈数:元素个数-1 次数:元素个数-1-圈数索引
    def Bubble_sort(li): for i in range(len(li)-1): for j in range(len(li)-1-i): if li[j] > li[j+1]: li[j], li[j+1] = li[j+1], li[j]

    选择排序

    1.思路

    2.代码实现

    #### 选择排序
    #### 时间复杂度:O(n^2)
    def select_sort(li):
        for i in range(len(li)):
            minLoc = i ###i = 0
            for j in range(i+1, len(li)):
                if li[j] < li[minLoc]:
                    li[j], li[minLoc] = li[minLoc], li[j]

    插入排序

    1.思路

     插入到有序区时会与有序区每个元素比较大的方后面位置

    2.代码实现

    ##### 插入排序
    #### 时间复杂度: O(n^2)
    def insert_sort(li):
        for i in range(1, len(li)):
            tmp = li[i]
            j = i - 1
            while j >=0 and li[j] > tmp:
                li[j+1] = li[j]
                j = j - 1
            li[j+1] = tmp

    快速排序

    1.思路

    取一个元素,从右往左元素依次比较大的放右边不动,小的放左边。哪边空出来位置就从对边取值比较补位。当左边和右边的索引相同时就把取出的元素补上。

    2.代码示例

    #归位函数
    def
    partition(li, left, right):
    #取出比较值 tmp
    = li[left] while left < right: #右边与比较值比较 while left < right and li[right] >= tmp: right = right - 1 li[left] = li[right] # 左边值与比较值比较 while left < right and li[left] <= tmp: left = left + 1 li[right] = li[left] # 右边和左边索引相同时比较值补位 li[left] = tmp return left #### 快速排序 #### 时间复杂度:O(nlogn) def quick_sort(li, left, right): if left < right: mid = partition(li, left, right) quick_sort(li, left, mid-1) quick_sort(li, mid+1, right) # 调用 quick_sort(li, 0, len(li)-1)

     

  • 相关阅读:
    初入职场的一些感悟
    疲惫于时间管理术-应该如何把握时间
    何为有效沟通
    powdesigner生成模型以后导入erwin大坑 oracle12c
    oracle 12c下载及安装全解析(踩坑注意)-win64-12102版本-2019-10-17
    聚集索引与非聚集索引的用法举例与使用注意
    十分钟,带你了解MobX 与 React
    GET https://pic.qyer.com/avatar/008/23/22/84/200?v=1469960206 403 (Forbidden) 图片防盗链
    writing
    使用github pages搭建博客
  • 原文地址:https://www.cnblogs.com/tfzz/p/12093514.html
Copyright © 2011-2022 走看看