一、插入排序
什么是插入排序?
插入排序的原理是什么?
能不能用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))