码迷,mamicode.com
首页 > 编程语言 > 详细

排序算法之插入排序

时间:2019-06-22 19:52:53      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:def   下标   color   原理   序列   插入排序   com   位置   扫描   

一、原理

将序列分为有序区和无序区两个部分,刚开始有序区只有一个元素,每次从无序区选择一个元素插入到有序区的位置,直到无序区为空。

关键点:

  • 插入到有序区时遵循从后向前进行扫描,然后将无序区的元素插入。
  • 此时无序区的第一个元素作为有序区的第一个元素

技术图片

二、实现

def insert_sort(li):

    for i in range(1,len(li)): #对无序区的元素进行循环,i表示第一个元素的下标,因为有序区已经有一个元素了
        temp=li[i] #将无序区取出的元素进行保存
        j=i-1 #是有序区的最后一个位置下标
        while j>=0 and li[j]>temp: #j表示有序区的元素
            li[j+1]=li[j] #将有序区的元素向后移动,因为从无序区已经取出一个元素,空了一个位置
            j-=1 #有序区的元素继续向前循环比较
            
        #将无序区的元素插入到有序区
        li[j+1]=temp  

l=[3,5,2,9]
insert_sort(l)
print(l) #[2, 3, 5, 9]

总结:

  • 有序区已经有一个元素,第一层循环无序区是从第二个元素开始
  • 无序区的元素需要保存,防止被覆盖
  • while循环无序区从后向前
  • 有序区需要元素后移以便无序区的元素插入

 原文:https://github.com/hustcc/JS-Sorting-Algorithm/blob/master/3.insertionSort.md

排序算法之插入排序

标签:def   下标   color   原理   序列   插入排序   com   位置   扫描   

原文地址:https://www.cnblogs.com/shenjianping/p/11069967.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!