zoukankan      html  css  js  c++  java
  • 排序算法(三)之插入排序

    一、插入排序
    什么是插入排序?
    插入排序的原理是什么?
    能不能用python代码敲出一个实例?
    带着以上三个疑问来阅读笔者的这篇文章;也正是如此,该篇的目的就是要清清楚楚的回答这些问题。
    插入排序:首先,从字面意思上理解:是插入,将元素插入进去,因为,跟中间性的插入密切相关;至于到底怎么插入,我们通过例子来一步步看懂它的原理
    比如:有一个列表【15、7、99、81、37、11、46】,请用插入排序的方法将其升序排列
      第一轮:第一个元素不动,把第2个元素与第1个元素去比较,如果第2个比第1个小,就可以插进去,也就是小的排在前面,大的排后面
            7、15
      第二轮:把99跟前面已排好的相比较,比7、15都要大,所以插不进去,只能排在后面
            7、15、99
      第三轮:把81跟前面已排好的相比较,比99小,插在99前面,比15大,插不进去,只能排15的后面
            7、15、81、99
      第四轮:把37跟前面已排好的相比较,比81小,比15大,插在它们两个之间
            7、15、37、81、99
      第五轮:把11跟前面已排好的相比较,比15小,比7大,插进它们两个之间
            7、11、15、37、81、99
      第六轮:把46跟前面已排好的相比较,比37大,比81小,插进它们两个之间
            7、11、15、37、46、81、99
    因此,此时已经排序完成。通过上面的一步步分析,其实质就是把后面的元素跟前面已排好的元素作大小比较,插进能插入的位置即可,插不进就直接排在后面,怎么插入就是比大小
    以上只是我的个人简单分析,上面在分析过程中没有写出来的元素,并不是没有,是存在的,只是我为了一步步分析,没有写全。我在稿纸上是写了的

    看下面的python代码实现:

    def insert_Sort(arr):
        # 从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的
        for i in range(len(arr)):
            m = i - 1
            n = arr[i]
            while m >= 0 and arr[m] > n:
                arr[m + 1] = arr[m]
                m = m - 1
            arr[m + 1] = n
        return arr
    
    
    li3 = [15, 7, 99, 81, 37, 11, 46]
    print(insert_Sort(li3))
    

  • 相关阅读:
    敏捷思维-架构设计中的方法学(12)Refactoring
    敏捷思维-架构设计中的方法学(11)精化和合并
    敏捷思维-架构设计中的方法学(8)架构愿景
    敏捷思维-架构设计中的方法学(10)分层 (下)
    Agile 敏捷建模思想 作者:林星
    敏捷思维-架构设计中的方法学(9)分层 (上)
    敏捷思维-架构设计中的方法学(13)稳定化
    敏捷思维-架构设计中的方法学(15)进一步阅读
    hdu 1829+hdu 1856(并查集)
    hdu 1050+hdu 1789+hdu 3177(贪心)
  • 原文地址:https://www.cnblogs.com/xj-excellent/p/15542126.html
Copyright © 2011-2022 走看看