- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 常用算法 [学习任务] 利用前面学到的流程控制语句和构造数据的方法,归纳总结常用的编程方法 [学习目标] 掌握后面八种程序设计的常用方法 [学习要点] 理解和掌握常用算法的一般步骤 小猪小猴,请抢答:1+2+…+100=? 1+2+3+…+100=?=? [能力要点] 能熟练选择恰当的算法,编写常见的程序 算法 算法: 程序员所说的“算法”,正是解决某一个特定问题的方案的准确而完整的描述。 用什么描述算法呢? 流程图、自然语言、伪码(PDL)均是描述算法的工具 。 评价算法优劣的标准: l?????? 计算量的大小;占用存储空间的大小;逻辑结构是否简单。 算法具有有穷性、确定性、能行性、有输入输出等特征。 第一节 排序 [本节任务] 学会冒泡排序(见第四章)、定位交换排序、直接插入排序 [学习要点] 掌握定位交换排序、直接插入排序的一般步骤 排序——排序是将任意排列的数据元素重新排列成有序序列的过程。 排序分为两种:内排序、外排序。 排序的方式有升序、降序两种。 排序过程的主要操作是什么?显然不外乎是比较、交换和移动。 1.1 定位交换排序 定义 定位交换排序算法思想是:⑴ 将原始数据放入数组x[N]中;⑵ 让每个x[i](0≤i≤N-2)与x[j] 逐次比较(i+1≤j≤N-1),只要是x[i]>x[j](或x[i]<x[j] )则立即交换x[i]与x[j],由此得到原始数据升序(或降序)的排序结果。交换排序的主要工作是比较与交换。 定位交换排序流程图见图5-1 ; 定位交换排序的变量表见表5-1; 定位交换排序过程见表5-2; #includeconio.h #define N 10 main() { int x[N],i; void sort(); clrscr(); for(i=0;iN;i++) scanf(%d,x[i]); /* 输入N位战士的原始身高 */ sort(x); for(i=0;iN;i++) printf(%d\t,x[i]); /* 输出N位战士的排序结果 */ } void sort(int x[]) { int i,j,t; for(i=0;iN-1;i++) for(j=i+1;jN;j++) if (x[i]x[j]) { t=x[i]; x[i]=x[j]; x[j]=t; } } [ 小结 ] (降序排序时) 定位交换排序法实现的步骤: ·第一轮,将第一个数与后面的每个数依次相比,如第一个小,就把大的放到第一个 的位置,原来第一个换到与它相比的那个的位置(交换);继续将新的第一个与后面 的继续比,凡小于后面某个,就交换…排完第一轮,最前面的那个已经是最大的。 ·第二轮,将第二个数与后面的各数依次相比,小于后面的就交换…排完第二轮,第 二个比它后面的数已经又是最大的; …… ·排完n-1轮,数组里的数已经按大到小排好了。 1.2 直接插入排序 定义 将一个新元素插入到已排好序的有序序列中,从而得到一个新的、元素个数增加了1个的有序序列,这就是插入排序。插入排序的主要工作是比较与移动。 直接插入排序流程图见图5-2 ; 直接插入排序的变量表见表5-1; 直接插入排序过程 见表5-3 ; #includeconio.h #define N 10 main() { int x[N],i; void sort(); clrscr(); for(i=0;iN;i++) scanf(%d,x[i]); sort(x); for(i=0;iN;i++) printf(%d\t,x[i]); }? void sort(int x[]) { int i,j,t; for(i=1;i=N-1;i++) { t=x[i]; for(j=i-1;j=0;j--) if(tx[j]) break; /* 找到了新元素该去的位置 */ else x[j+1]=x[j]; /* 原有序序列x[j]后移一个位置 */ x[j+1]=t; /* 新元素到位 */ } } [ 小结 ] (升序排序时) 直接插入排序法实现的步骤 · 第一轮,拿最前面
您可能关注的文档
最近下载
- ctf考试题及答案.doc VIP
- 1.1生活 观察(教学课件)-2025-2026学年七年级数学数学上册(苏科版2024).pptx VIP
- 念珠菌性阴道炎的诊治-极经典.ppt VIP
- 2025年北京城市副中心投资建设集团有限公司招聘笔试模拟试题及答案解析.docx VIP
- 八月下旬一级建造师考试《水利水电工程管理与实务》真题(附答案).docx VIP
- 优秀病例汇报大赛课件(手工精品图文).pptx VIP
- 掼蛋教学课件.ppt VIP
- 太阁立志传5资料集.doc VIP
- 七月下旬一级建造师考试《水利水电工程管理与实务》第二次真题(附答案).docx VIP
- 美容礼仪与人际沟通讲解.ppt
文档评论(0)