为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

插入排序

2017-09-19 3页 doc 13KB 14阅读

用户头像

is_882336

暂无简介

举报
插入排序插入排序 直接插入排序 (1)基本思想 假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成一个有序区,无序区为R[2..n]。从i=2 起直至i=n 为止,依次将R[i]插入当前的有序区R[1..i?1]中,生成含n 个记录的有序区。 (2)第i?1 趟直接插入排序 通常将一个记录R[i](i=2,3,…,n?1)插入到当前的有序区,使得插入后仍保证该区间里的记 录是按关键字有序的操作,称为第i-1 趟直接插入排序。 排序过程的某一中间时刻,R 被划分成两个子区间R[1..i?1](已排好序的有序区)...
插入排序
插入排序 直接插入排序 (1)基本思想 假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成一个有序区,无序区为R[2..n]。从i=2 起直至i=n 为止,依次将R[i]插入当前的有序区R[1..i?1]中,生成含n 个记录的有序区。 (2)第i?1 趟直接插入排序 通常将一个记录R[i](i=2,3,…,n?1)插入到当前的有序区,使得插入后仍保证该区间里的记 录是按关键字有序的操作,称为第i-1 趟直接插入排序。 排序过程的某一中间时刻,R 被划分成两个子区间R[1..i?1](已排好序的有序区)和R[i..n](当前未排序的部分,可称无序区)。 直接插入排序的基本操作是将当前无序区的第1 个记录R[i]插入到有序区R[1..i?1]中适当的位置上,使R[1..i]变为新的有序区。因为这种方法每次使有序区增加1 个记录,通常称增量法。插入排序与打扑克时整理手上的牌非常类似。摸来的第1 张牌无需整理,此后每次从桌上的牌(无序区)中摸最上面的1 张并插入左手的牌(有序区)中正确的位置上。为了找到这个正确的位置,需自左向右(或自右向左)将摸来的牌与左手中已有的牌逐一比较。 #include #define M 100 int R[M]; void Insert_Sort(int n) { int i, j; for(i=2; i<=n; i++) { if(R[i] < R[i-1]) { R[0] = R[i]; j = i - 1; do { R[j+1] = R[j]; j--; } while (R[0] < R[j]); R[j+1] = R[0]; } } } int main() { int i, n; puts("Input total element number of the sequence:"); scanf("%d", &n); if(n <= 0 || n > M) { printf("n must more than 0 and less than %d.\n", M); return 0; } puts("Input the elements one by one:"); for(i=1; i<=n; i++) scanf("%d", &R[i]); puts("The sequence you input is:"); for(i=1; i<=n; i++) printf("%4d", R[i]); Insert_Sort(n); // 直接插入排序 puts("\nThe sequence after insert_sort is:"); for(i=1; i<=n; i++) printf("%4d", R[i]); return 0; }
/
本文档为【插入排序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索