插入排序基本思想.doc
《插入排序基本思想.doc》由会员分享,可在线阅读,更多相关《插入排序基本思想.doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、,插入排序基本思想 插入排序的基本思想:每次将一个待排序的记录,按其关键字的大小插入到前面已经排好序的子文件的适当位置,直到全部的记录插入完成为止。 本节介绍二种插入排序方法:直接插入排序和希尔排序。 先介绍简单的一种插入排序方法:直接插入排序直接插入排序基本思想: 直接插入排序 1、基本思想: 假设待排序的记录存放在R1.n数组中,初始时该数组R1自成有序区。无序区为R2.n,从R2.n中的R2开始到Rn,依次将Ri插入到有序区中,生成最终的有序区。 2、直接插入排序: 通常将一个记录Ri 插入到当前有序区,使得插入后的仍保证区间里面的记录是有序的,该操作称为第i-1趟插入排序。 排序过程的
2、某一个中间时刻,R被划分为二个子区,有序区和无序区,R1.i-1是已排好的有序区间,Ri.n为无序区。 直接插入排序的基本操作是将当前无序区的第一个记录Ri 插入到有序区中适当的位置上,使得R1.i变为新的有序区。因为这种方法每次是的有序区增加一个记录,因此通常称为增量法。 一趟直接插入排序方法 1、简单方法 首先在当前有序区中查找R1.i-1中Ri应该插入的正确位置;然后将Rk.i-1的记录均向后移动一个位置,腾出K位置上的空间插入Ri。如果Ri的关键字大于等于R1.i-1中的记录,那么Ri插入到原位置。即i位置。 2、改进的方法 一种查找比较操作和记录移动操作交替进行的方法。 具体的做法:
3、 将待插入的Ri关键字从右向左依次与有序区中记录Rj关键字进行比较(1ji-1): 1、若Rj的关键字大于Ri的关键字则将Rj后移一个位置。 2、若Rj的关键字小于或者等于Ri的关键字,则查找过程结束,j+1即为Ri的插入位置。 关键字比Ri的关键字打的记录均已经后移,所以j+1的位置已经腾空,只要将Ri插入到该位置即可完成一趟直接插入排序。直接插入排序算法源码 1 void lnsertSort(int R) 2 /对顺序表R中的记录R1.n按递增序进行插入排序 3 int i,j; 4 for(i=2;i=n;i+) /依次插入R2,Rn 5 if(Ri.keyRi-1.key)/若Ri.
4、key大于等于有序区中所有的keys,则Ri 6 /应在原有位置上 7 R0=Ri;j=i-1; /R0是哨兵,且是Ri的副本 8 do 9 /从右向左在有序区R1i-1中查找Ri的插入位置10 Rj+1=Rj; /将关键字大于Ri.key的记录后移11 j- ;12 13 while(R0.keyRj.key); /当Ri.keyRj.key时终止14 Rj+1=R0; /Ri插入到正确的位置上15 /endif16 /该排序算法中加入了附加记录R0,其作用是:1、进入查找插入位置循环之前,他保存了Ri的副本。使得不因为记录后移而丢失Ri的内容。2、他的主要作用是:在查找循环中监视下标变量j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 插入 排序 基本 思想
限制150内