基于冒泡和直接插入排序的二分查找算法实现及复杂度分析

基于冒泡和直接插入排序的二分查找算法实现及复杂度分析

ID:6634449

大小:51.68 KB

页数:16页

时间:2018-01-20

基于冒泡和直接插入排序的二分查找算法实现及复杂度分析_第1页
基于冒泡和直接插入排序的二分查找算法实现及复杂度分析_第2页
基于冒泡和直接插入排序的二分查找算法实现及复杂度分析_第3页
基于冒泡和直接插入排序的二分查找算法实现及复杂度分析_第4页
基于冒泡和直接插入排序的二分查找算法实现及复杂度分析_第5页
资源描述:

《基于冒泡和直接插入排序的二分查找算法实现及复杂度分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于冒泡和直接插入排序的二分查找算法实现及复杂度分析1.引言《算法语言与程序设计》课程设计是算法语言与程序设计的重要组成部分,是为强化算法语言与程序设计课程教学和实验教学的内容、为提高同学们应用算法语言综合编程的能力而进行的针对课程内容的综合性设计训练。此次的设计要求是根据指导老师所给出的一组数据进行排序及分析。第一步是建立一个合适的数据文件;第二步是读入数据;第三步是选择冒泡和直接插入排序算法;第四步是实现二分查找法查找指定关键字对应数据,并输出查找结果。2.算法原理2.1冒泡排序算法冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大

2、数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。2.2直接插入排序算法直接插入排序的基本概念是:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中

3、去,最终将所有无序区元素都移动到有序区完成排序。2.3二分查找算法二分查找算法的基本原理:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。3.算法步骤3.1冒泡排序算法步骤及流程图3.2直接插入排序算法步骤及流程图3.2二分查找算法及流程图二分查找又称折半查找,优点是比较次数少,查找

4、速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。4.程序设计4.1数据文件准备应用MicrosoftExcel2010软件建立txt文件4.2程序总体结构(建议采用

5、模块化程序设计)本程序一共包含7个模块,如图所示:4.3文件读写打开文件代码:FILE*in;in=fopen("。。。.txt","r");if(in==NULL){printf("。。。.txtcannotopen!");exit(0);}关闭文件代码:fclose(in);4.4两次直接插入排序算法函数voidinsertion_sort(datap[]){inti,j,n,k;for(i=1;i<200;i++){datar;j=i-1;r=p[i];n=p[i].dileibm;while(j>=0&&p[j].dileibm>n){p[

6、j+1]=p[j];j--;}p[j+1]=r;if(p[j].dileibm==p[j+1].dileibm){k=j;n=p[j+1].tubanbh;while(k>=0&&p[k].tubanbh>n){p[k+1]=p[k];k--;if(p[k].dileibm

7、++)if(p[j].dileibm>p[j+1].dileibm){t=p[j];p[j]=p[j+1];p[j+1]=t;}}for(i=0,j=1;i<200;i++)if(p[i].dileibm!=p[i+1].dileibm){a[j]=i+1,b[j-1]=i,j++;n=j;}a[0]=0,b[j]=200;for(i=0;ip[j+1].tubanbh){t=p[j];p[j]=p[j+

8、1];p[j+1]=t;}}}4.6二分查找法对关键词进行查找函数intfun(intarr[],intlow,inthi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。