- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数组应用的技巧与方法 常用算法:计数器、累加器、累乘器 计数器 int count=0; while (…) { … count ++ } 累加器 int s=0; for (…) { … a=…; s=s+a; } 关于一维数组的问题 一般一维数组所涉及的主要问题有 排序 插入 删除 查找 分类统计 涉及到一些算法,我们通过例题介绍一部分 具体问题的解题算法的思路要靠自己慢慢去体会 常见排序算法 插入排序 直接插入排序 折半插入排序 表插入排序 希尔排序 交换排序 冒泡排序 快速排序(不稳定) 选择排序 归并排序 基数排序 插入排序 直接插入排序 有序插入 首先查找要插入的位置,假设位置为a[L]之前 则: for (i =n+1;i L;i--) a[i]=a[i-1] 有序删除 比如要删除a[d]这个元素, 则 for (j = d;j n;j++) a[j]=a[j+1] 交换排序 冒泡排序 冒泡排序法关键程序 int i,j,minj,t; ? ?for (i = 0;i N-1;i++) { ? ?? ?for (j = i + 1;j N-1;j++)? ?? ? if (a[j] a[i]) {? ?? ?? ? ?t = a[i];? ?? ?? ? a[i] = a[j];? ?? ?? ? a[j] = t; ? ?? ? }? ?} 选择排序(快速排序) 算法:首先找到数据清单中的最小的数据,然后将这个数据同第一个数据交换位置;接下来找第二小的数据,再将其同第二个数据交换位置,以此类推。 第1次,在数组a的n个数据中选出其小者(只标记其所在位置),若它不在其位置(即其下标不等于1)则与第一个数据进行交换(只需交换一次),经过本次处理后,总可以使得数组a的第1个数据为第1小。 第2次,在数组a的后n-1个数据(即出去已经选择的最小者的各数据)中,经过类似的处理后,可以使得数组a的第2个数据为第2小。 第i次,在数组a后的n-i+1个数据中,经过类似选择处理后,数组a的第i个数据为第i小。 第n-1次,在数组后的2个数据中,经过类似处理后,总可以使数组a的第n-1个数据为第n-1小。而这时候第n个数据是第n小。 关于选择排序 算法:N元数组a[0]~a[N-1]由小到大排序:第0步:找到a[0]~a[N-1]中的最小值元素与a[0]交换;第1步:找到a[1]~a[N-1]中的最小值元素与a[1]交换;第2步:找到a[2]~a[N-1]中的最小值元素与a[2]交换; …第i步:找到a[i]~a[N-1]中的最小值元素与a[i]交换;…第N-2步:找到a[N-2]~a[N-1]中的最小值元素与a[N-2]交换。算法停止。 选择排序法程序 int i,j,minj,t; ? ?for (i = 0;i N-1;i++) { ? ?? ?minj = i; //有什么作用?? ?? ?for (j = i + 1;j N;j++)? ?? ?if (a[j] a[minj])? ?? ?? ? minj = j;? ?? ?if (minj != i) {? ?? ?? ?t = a[i];? ?? ?? ?a[i] = a[minj];? ?? ?? ?a[minj] = t; ? ?? ?}? ?} 查找算法 查找之前要求排序,不然无章可查 顺序查找 按照排好序的顺序进行查找,比如对一个升序排列的数组中,找到第一个大于需要查找的数 折半查找(二分查找) 折半查找(二分查找) 先给数据排序(例如按升序排好),形成有序表,然后再将key与正中元素相比,若key小,则缩小至右半部内查找;再取其中值比较,每次缩小1/2的范围,直到查找成功或失败为止。 折半查找 折半查找法程序 int BinSearch(int R[], int n, int Key) //功能:在有序表R[0..n-1]中进行折半查找 //返回值:查找成功时返回数组下标,否则返回-1 { int low=0,high=n-1,mid; //置当前查找区间上、下界的初值 while(low=high) //当前查找区间R[low..high]非空 { mid=low+((high-low)/2); //使用(low+high)/2会有整数溢出 if(R[mid]==Key) return mid; //查找成功返回 if(R[mid]Key) high=mid-1; //继续
您可能关注的文档
- 2017年临床执业医师《精神神经系统》考试大纲要领.doc
- (一)投稿无标题,只写信息或者计生信息。(二)新闻报道摘要.ppt
- 2016年硕士研究生招生专业目录介绍.PDF
- 第二十三章 皖南医学院2017年考研西医综合考试大纲.PDF
- 第二篇大学生心理健康.ppt
- 第三章 慢性阻塞性肺疾病急性加重期患者抗菌药应用调查.PDF
- 第1篇政务网站基础知识.ppt
- 第二十三章 天津市各区县2016年春季公开招聘社区.doc
- 第四篇保护生存环境第三节垃圾资源化.ppt
- 第九章 稿件格式编排注意事项.doc
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
最近下载
- 2024年中国石油秋季招聘通用能力考试笔试备考试题及答案解析.docx
- 第一课 教室盆栽我做主—盆栽养护 课件 浙科版综合实践活动四年级上册.pptx
- 医疗安全(不良)事件根本原因分析法活动指南.pdf VIP
- 2023年中考押题预测卷02(杭州卷)-英语(考试版)A4.docx
- 于品 清华丘班数学分析讲义.pdf VIP
- 金融风险管理(中央财经大学)中国大学MOOC(慕课)章节测验试题(答案).pdf
- 一年一度喜剧大赛江东鸣《先生请出山》完整台词.docx VIP
- 党员立足本职岗位发挥党员先锋引领作用发言稿.doc VIP
- 《机床电气控制》M7130型卧轴矩台平面磨床的电气控制.pdf VIP
- Unit 4 Period 4 Developing Ideas 课件-高一上学期英语课件(外研社2019必修第一册).pptx
文档评论(0)