插入排序法

前言

      最近买了一本算法导论的书籍,同学念研究生就是用的这本书,其实这些算法数据结构直接就该弄完的,都工作四年了,只是知道一点说来惭愧,不懂算法的程序员不是好的程序员。算法导论刚开,从前往后看的,第一章的插入法看书的图还是看的不明白容易产生误导,于是自己写了代码才更加的理解了。

正文

      一是看书的文字描述比较枯燥,二是看书上的图感觉不对劲儿,也是自己理解有限。

      这是书中的原图:

      插入排序法_第1张图片

      关于从上图中(d)开始我自我感觉这画的不好,下面是我自己做的更加容易理解插入算法的图

      插入排序法_第2张图片

      也就是遍历,从索引1的位置开始,每次遍历的item作为key来进行对比作为遍历的条件。背景色为粉色的项为每次遍历要走的key,外面的大遍历是整个数组的长度,而里面的小循环实际是key的index倒序的遍历。那么每次遍历自我感觉可以是把每次要遍历的项指向了key,通过与key的比较确定每一项的位置。每次对比如果没有打错号就是可以对比并且符合对比后不是key项的将要像右移动一位。如果没有对比那么就是保持位置不动即可。

     代码演示C#:         

     插入排序法_第3张图片

     这样感觉起来更容易理解一下,不明白的时候找代码调试一下就豁然开朗。

总结

     人在做,天在看。认真做好自己,工作时候就是工作什么时候干什么事情。

你可能感兴趣的:(插入排序法)