导文
几种算法模型必须信手捏来,因此这几种解决问题的思路和方法可以扩展到非常多的地方,搭建好模型后,根据模型演变各种算法
算法模型
算法实现
实现细节
1.添加哨兵岗数据,其次限定已经排序好的数列序号,初始假定已经排好第一个数是有序序列,最后拿第二个数和第一个数做比较,依次类推,
2.排序时i取值范围最好和数字初始排序序号一直,
3.再设置哨兵位和已经排序好的数列中最后一个序号做比较时,设定j,并确定j = i - 1,
4. 发现一旦已经排好序的最后一个数大于岗位数时,要依次向前进行比较,而且不确定多少次,说明while 循环比较。
5. 根据上图可知5个数的序列只需4趟即可完成
实现注意
在最后岗位上的数字插入哪个位置呢?与j有什么关系,通过带入函数跟踪到5时,发现要出入的位置就是j+1,但是此时的j+1并不等于i,因为j是递减,至于减到多少无法预判,只能根据while循环条件进行判断,因此只能判断出位置为lst[j+1] = lst[0]
实现代码