排序算法之插入排序
一、原理
将序列分为有序区和无序区两个部分,刚开始有序区只有一个元素,每次从无序区选择一个元素插入到有序区的位置,直到无序区为空。
关键点:
- 插入到有序区时遵循从后向前进行扫描,然后将无序区的元素插入。
- 此时无序区的第一个元素作为有序区的第一个元素
二、实现
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
作者:iveBoy
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。