zoukankan      html  css  js  c++  java
  • 经典算法之插入排序(Quick Sort)-Python实现

    插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

    一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:

    1. 从第一个元素开始,该元素可以认为已经被排序;
    2. 取出下一个元素,在已经排序的元素序列中从后向前扫描;
    3. 如果该元素(已排序)大于新元素,将该元素移到下一位置;
    4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
    5. 将新元素插入到该位置后;
    6. 重复步骤2~5。

    Python 代码实现

    def insertion_sort(arr):
        length = len(arr)
    
        if length <= 1:
            return
    
        for i in range(1, length):
            value = arr[i]
            j = i - 1
            print('init j', j)
    
            while j >= 0 and arr[j] > value:
                arr[j + 1] = arr[j]
                j -= 1
                print('替换j', j)
            arr[j + 1] = value
            print('value', value, arr)
    
    
    if __name__ == '__main__':
        # arr = [random.randint(0, 100) for _ in range(10)]
        arr = [56, 21, 75, 93, 39, 55, 34, 42, 81, 30]
        print("origin", arr)
        insertion_sort(arr)
        print("result", arr)
    

      插入排序的时间复杂度为O(n2),空间复杂度O(1)

    本博客的内容如果没有标注转载字样,均属个人原创!欢迎学习交流,如果觉得有价值,欢迎转载,转载请注明出处,谢谢!
  • 相关阅读:
    mysql 聚集函数 count 使用详解
    在Docker中使用kettle遇到的问题解决
    整取零存_字段级迁移工具
    快速修改MySQL字段类型
    数据仓库知识点梳理(4)
    五一节分享60多本免费AI电子书
    数据仓库知识点梳理(3)
    数据仓库知识点梳理(2)
    数据仓库知识点梳理(1)
    解决MacVim在macOS Catalina下字母显示不全的问题
  • 原文地址:https://www.cnblogs.com/L-O-N/p/14543197.html
Copyright © 2011-2022 走看看