zoukankan      html  css  js  c++  java
  • 插入排序

    插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

    插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。

    1. 算法步骤

    1. 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

    2. 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

    2. 动图演示

      

    3. 代码实现

    # _*_ coding:utf8 _*_ 
    
    def insertionSort(arr):
        for i in range(len(arr)):
            preIndex = i - 1
            current = arr[i]
            while preIndex >= 0 and arr[preIndex] > current:
                arr[preIndex + 1] = arr[preIndex]
                preIndex -= 1
            arr[preIndex +1 ] = current
        return arr
    
    
    if __name__ == "__main__":
        arr = [3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48] 
        arr_s = insertionSort(arr)
        print(arr_s)
  • 相关阅读:
    AcWing 37. 树的子结构
    AcWing 30. 正则表达式匹配 (剑指OFFER leetcode 10)
    Leetcode 514 自由之路
    AcWing 28. 在O(1)时间删除链表结点
    solrCloud+tomcat+zookeeper配置
    ZooKeeper原理及配置
    ZooKeeper原理及配置
    ZooKeeper原理及配置
    SolrCloud Hello Word
    SolrCloud Hello Word
  • 原文地址:https://www.cnblogs.com/zhouziyuan/p/11820797.html
Copyright © 2011-2022 走看看