




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数组操作,(1)选择排序法(2)冒泡排序法(3)比较排序法,(1)顺序查找法(2)折半查找法,(1)数组元素插入(2)数组元素删除,(1)选择排序第17、26套的填空题,简单选择排序:从1到n选出关键值最(大)小的记录,交换到第一个位置上,然后从2到n选出键值最(大)小的记录,交换到第二个位置上,.,5471582931547158293154715829315471582931,i=0,初态,数组下标01234,k!=i,交换,判断ajak?,用选择法对数组inta5=54,71,58,29,31进行升序排序,k=j,2971585431,2971585431,2971585431,2971585431,k!=i,交换,2931585471,判断ajak?,k=j,k=j,k=j,判断ajak?,“选择排序法”(由小到大排序)选择法(递增)基本思想:(1)从n个数的序列中选出最小的数,与第1个数交换位置;(2)除第1个数外,其余n-1个数再按(1)的方法选出次小的数,与第2个数交换位置;(3)重复(1)n-1遍,最后构成递增序列。实现方法:采用双重循环(循环的嵌套)外循环为i:控制排序趟数内循环为j:第i趟排序过程中的下标变量,“选择”排序法的结构形式:,for(i=0;iaj)k=j;if(k!=i)t=ai;ai=ak;ak=t;,#include#includestdlib.hvoidmain()constintN=10;inti,j,k,t,aN;for(i=0;iaj)k=j;if(k!=i)t=ak;ak=ai;ai=t;for(i=0;iN;i+)printf(%5d,ai);printf(n);,第二种:“冒泡法”(由小到大排序)基本思想:(1)从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面,一轮比较完毕,最大的数存放在aN-1中;(2)然后对a0到aN-2的N-1个数进行同(1)的操作,次最大数放入aN-2元素内,完成第二趟排序;依次类推,进行N-1趟排序后,所有数均有序。实现方法:采用双重循环(循环的嵌套),(2)冒泡排序,交换排序:俩俩比较待排序记录的键值,若逆序,则交换,直到全部满足为止,交换排序“冒泡”排序法特点:逐个对数组中每相邻二数进行比较,若条件满足,则互相交换,否则保持原位置不变。,千万要注意!若有n个数据,需要进行i=n-1轮比较。每轮中比较的次数为j=n-i+1次。,排序过程:(设数据存于A数组中,n个数据,按递增次序排序)A0与A1比较A0A(1)不换,否则对调A1与A2比较A1A2不换,否则对调:An-2与An-1比较An-2An-1不换,否则对调,冒泡法排序,用冒泡法对10个数排序(由小到大)。,482759,248579,245879,245789,245789,245789,冒泡排序的结构形式(递增),for(i=0;iaj+1)t=aj;aj=aj+1;aj+1=t;,for(i=1;iaj+1)t=aj;aj=aj+1;aj+1=t;,关键代码:,14,for(i=0;iaj+1)t=aj;aj=aj+1;aj+1=t;,#include#defineN6voidmain()inti,j,t,aN;printf(inputNnumbers:n);for(i=0;iaj+1)t=aj;aj=aj+1;aj+1=t;for(i=0;iN;i+)printf(%5d,ai);printf(n);,冒泡程序,第三种:比较排序(上机19、52套编程题),for(i=0;iaj)t=ai;ai=aj;aj=t;,注意ai与aj比较,补充知识一:查找,查找的方法很多。如:顺序查找、二分法查找等等。,1、顺序查找:最简单的查找方法,基本思想是利用循环顺序扫描整个数组,依次将每个元素与待查找值比较,直至找到或找不到。,对于无序数组,顺序查找是唯一可行的办法对大批量数据用顺序查找占机器时间较多。,intSearch(longa,intn,longx)inti;for(i=0;in;i+)if(ai=x)return(i);return(-1);,2、二分法查找/折半查找:,二分法查找的条件:,必须是有序数列,即数组中的各元素已按数值大小按递增或递减次序排列!,查找过程:(1)将数列对分,找出中间数据(2)用此数据与要查的数据比较(3)数值相等则结束查询,否则确定要查的数据所在区间,逐步缩小查找范围,每次将数列区间缩小一半,直到找到或找不到为止。,(08,14,23,37,46,55,68,79,91),(08,14,23,37,46,55,68,79,91),(08,14,23,37,46,55,68,79,91),(08,14,23,37,46,55,68,79,91),(08,14,23,37,46,55,68,79,91),(08,14,23,37,46,55,68,79,91),折半查找(二分法查找),(08,14,23,37,46,55,68,79,91),下标012345678,折半查找,1,5,6,9,11,17,25,34,38,41,下界low,上界up,中值mid,共有10个已排好序的数据:查找9。,intBinSearch(longa,intn,longx)intlow,high,mid;low=0;high=n-1;while(lowamid)low=mid+1;elseif(xamid)high=mid-1;elsereturn(mid);return(-1);,折半查找程序,#includemain()intup=9,low=0,mid,found=0,find;inta10=1,5,6,9,11,17,25,34,38,41;scanf(%d,补充知识二:数组元素的插入、删除,1、插入数据在有序数组中插入数据后,数组仍然有序。要求数组有足够的空间。,前提:被操作数组已经是有序数组,操作前后不改变数组的有序性,插入过程:(1)确定数据插入位置(2)从最后一个元素开始逐个后移,直到将第i个位置腾出。(ai+1=ai)(3)将数据插入到指定下标元素位置中,插入运算,ai-1,.,a1,a0,alength,ai+1,ai,x,x,2、删除数据在有序的数组中删除数据后,数组仍然有序。,删除过程:(1)确定数据删除位置i(2)从第i1个位置开始逐个向前移动原数组元素,(ai=ai+1),下面介绍引用一维数组元素的三种方式。1.下标方式形式:数组名下标,如ai2.地址方式形式:*(地址),如*(a+i)等价ai3.指针方式形式:*指针变量名如:inta10,*p;p=,一维数组与指针,1数组就是连续存放的若干元素的集合。2数组名就是指向数组第一个元素的首地址(指针)如i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中政治3.1说课课件
- 2025年中国自动化仪表行业市场前景及投资研究报告
- 高一急救知识培训班课件
- 智能化施工安全防护空白单位工程劳务分包合同
- 离婚子女抚养权归属与财产分割及子女社会实践协议
- 离婚协议签署及履行监督服务合同
- 离婚协议:财产分割、子女抚养及共同财产清算合同
- 民族特色理发店技师劳务合作合同范本
- 广告内容本地化代理合同
- 职业技能拓展方案设计
- 自动生成的文档-202504081202-98
- 华能集团薪酬管理制度
- T/CNFAGS 16-2024绿色甲醇分级标准(试行)
- T/CIE 147-2022空间行波管加速寿命试验评估技术规范
- 系统性淀粉样变性护理
- 化工过程安全管理导则 (一)
- 借车给他人免责协议书
- 国家能源集团共享服务中心有限公司-企业报告(业主版)
- 《缺血性卒中脑细胞保护临床实践中国专家共识(2025年版)》解读
- 《顺丰速运探索》课件
- 《动物繁殖技术》课件
评论
0/150
提交评论