• 经典算法之插入排序(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)

    本博客的内容如果没有标注转载字样,均属个人原创!欢迎学习交流,如果觉得有价值,欢迎转载,转载请注明出处,谢谢!
  • 相关阅读:
    c# 基础算法(一) 九九乘法
    万能模糊查询SQL
    C#通过连接ODBC的方式调用存储过程
    《从设计到模式》学习笔记part1
    C#知识归纳
    Python之路
    Tomcat优化
    Zabbix 3.0 + Nginx + Mariadb
    Spark DataFrame ETL教程
    Python连接presto
  • 原文地址:https://www.cnblogs.com/L-O-N/p/14543197.html
Copyright © 2020-2023  润新知