码迷,mamicode.com
首页 > 编程语言 > 详细

《算法导论》读书笔记之插入排序

时间:2015-03-01 11:46:28      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

插入排序的机理与打牌整理手中的牌的做法差不多。

(1)开始摸牌时,我们的左手是空的,接着一次从牌面上摸起一张牌,并将它插入到左手一把牌中的正确位置上。

(2)为了找到这张牌的正确位置,要将它与手中已有的牌从右到左进行比较。

(3)无论什么时候左手中的牌都是有序的。

插入排序升序代码如下:

技术分享
 1 void InsertSort(int a[], int length)
 2 {
 3     for(int i=1; i<length; i++)
 4     {
 5         //[a[0],a[i-1]]闭区间始终是有序的,故a[i-1]作为a[i]的参照元素,对a[i]进行定位。
 6         if(a[i]<a[i-1])//若a[i]>=a[i-1],则[a[0],a[i]]闭区间是有序的,直接进行下一元素的比较。
 7         {
 8             int j = i-1;//以i-1为循环比较和后移的起点
 9             int tmp = a[i];//将a[i]值存临时变量中,把j+1位置留空
10             while(tmp<a[j] && j>=0)
11             {
12                 a[j+1] = a[j];//j必须大于等于0
13                 j--;//从右向左比较
14              }
15             a[j+1] = tmp;//tmp>=a[j],故放在j+1位置
16         }
17     }
18 }
View Code

 

《算法导论》读书笔记之插入排序

标签:

原文地址:http://www.cnblogs.com/shijianchuzhenzhi/p/4306737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!