- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 共 100 页 第 * 页 3、插入法排序 即:有序序列的插入算法。就是将某数据插入到一个有序序列后,该序列仍然有序。 基本思想:n个有序数(从小到大)存放在数组a(1)~a(n)中,要插入的数x。首先确定x插在数组中的位置P,通过数组的移动腾挪,将x插入相应的位置。 插入法排序的要领就是每读入一个数立即插入到最终存放的数组中,每次插入都使得该数组有序。 共 100 页 第 * 页 例g-18、将任意读入的整数x插入一升序数列后,数列仍按升序排列。 #define N 10 main() { int a[N]={-1,3,6,9,13,22,27,32,49}, x, j, k; scanf(%d,x); if(xa[N-2]) a[N-1]=x ; else { j=0; while( j=N-2 xa[j]) j++; for(k=N-2; k=j; k--) a[k+1]=a[k]; a[j]=x; } for(j=0; j=N-1; j++) printf(%d ,a[j]); } 共 100 页 第 * 页 例g-19、任意读入10个整数,将其用插入法按降序排列后输出。 #define N 10 main() { int a[N],i,j,k,x; scanf(%d,a[0]); for(j=1; jN; j++) { scanf(%d,x); if (xa[j-1]) a[j]=x; else { i=0; while (xa[i]i=j-1) i++; for(k=j-1; k=i; k--) a[k+1] = a[k]; a[i] = x; } } for(i=0; iN; i++) printf(%d\n,a[i]); } 共 100 页 第 * 页 4、归并排序 即将两个有序(都升序或降序)数组A、B排列的数据序列合并成一个仍按原序排列的序列C。 【基本思想】 1)先在A、B数组中各取第一个元素进行比较,将小的元素放入C数组; 2)取小的元素所在数组的下一个元素与另一数组中上次比较后较大的元素比较,重复上述比较过程,直到某个数组被先排完; 3)将另一个数组剩余元素抄入C数组,合并排序完成。 共 100 页 第 * 页 【例g-20】有一个含有6个数据的升序序列和一个含有4个数据的升序序列,将二者合并成一个含有10个数据的升序序列。 #define M 6 #define N 4 main() { int a[M]={-3,6,19,26,68,100}, b[N]={8,10,12,22}; int i, j, k, c[M+N]; i=j=k=0; while(im jn) { if(a[i]b[j]) { c[k] = a[i]; i++; } else { c[k]=b[j]; j++; } k++; } while (i=m jn) { c[k]=b[j]; k++; j++; } while (j=n im) { c[k]=a[i]; k++; i++; } for (i=0; im+n; i++) printf(%d ,c[i]); } * * * * * * * * * * * * * * * * * * * * * * * * * * * C语言常用算法 共 100 页 第 * 页 一、数值计算 1、累加 2、累乘(阶乘) 3、交换 4、最大/最小值 5、数位拆解 6、数组移动 7、级数计算 8、素数判断 二、数据查找 1、顺序查找 2、穷举查找 三、排序算法 1、冒泡排序 2、选择排序 3、插入排序 4、归并排序 共 100 页 第 * 页 1、累加 累加算法的要领是形如“s=s+A”的累加式,此式必须出现在循环中才能被反复执行,从而实现累加功能。 “A”通常是有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为0。 一、数值计算 共 100 页 第 * 页 例g-1、求1+2+3+……+100的和。 main() { int i,s; s=0; i=1; while (i=100) { s = s+i; i = i+1; } printf(“s=%d\n,s); } 【解析】程序中红字部分为累加式的典型形式,赋值号左右都出现的变量称为累加器,其中“i = i + 1”
您可能关注的文档
- R快捷键大全.doc
- 界面设计教程.ppt
- h02 市场营销管理哲学及其贯彻.ppt
- MA工程应用.ppt
- N总线详细教程,精心编制,不可错过.ppt
- 11数据库设计.ppt
- 10-机械零件失效与选材 第16讲 2009-6-23.ppt
- D绘图教程-三维建模.ppt
- 2-6ed 物理层.ppt
- 07事务处理.ppt
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
文档评论(0)