算法导论

算法,一直是我想去大公司路上的一块绊脚石,总觉得平时用不到,但是考试总要考,不管是否能用到,学习总归是好事,前不久买了本《算法导论》接下来的日子,我会把自己看到的关于算法东西写出来,用罗胖的话就是,读书是一件苦事,死磕自己,娱乐大家。

一、插入排序

先上伪代码:

INSERTION-SORT(A)

1.for j=2 to A.length

2.   key = A[j]

3.   //Insert A[j] into the sorted sequence A[1..j-1]

4.   i = j - 1

5.   while i > 0 and A[i] > key

6.       A[i+1] = A[i]

7.       i = i -1

8.     A[i+1] = key

听名字就容易理解,“插入”就像排队一样,最起码你前面有一个人,你插队插在他前面,才叫插入。因此,for循环就从j=2(本文是根据读《算法导论》编写,因此下标统一从1开始),也就是第二个数开始。排序肯定涉及到交换,交换肯定涉及到中间变量,第二行key就是这个中间变量。从队尾的前一个开始比较,因此第四行:i = j - 1,交换的条件要满足不能超过数组的一个,而且待排序的数要比前面的值大才能交换。接下来就是插入排序的精髓:尾部和倒数第二个交换后,之前的尾部(也就是现在的倒数第二个数)还是待排序(此时表示排序完成),因此它要和倒数第三个数进行比较,这时的待比较的下标就变为i = i-1,第7行和第8行应该可以换位置,只不过如果换位置A[i+1] = key就要变为A[i] = key.

ok,这就是插入排序了,过程就像打扑克的起牌过程,手里的牌由少变多,依次插入。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,301评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,826评论 0 15
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,352评论 0 2
  • 奚梦瑶摔跤这个热点沸沸扬扬了两三天,热度依然不减。 随便打开什么浏览器,下面的新闻推送里,十篇中必定有至少一篇是在...
    一袭话梦阅读 280评论 0 1
  • 我代大冰来看你 ————百城百校音乐会商院站 作家有很多,野生作家只有一个。写书的人很多,大冰只有一个。他没有粉丝...
    兮沐沐阅读 683评论 0 1

友情链接更多精彩内容