- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录
第一章:简介 1
第二章:算法规范 2
数据结构 2
伪代码 3
第三章:算法测试 4
顺序查找结果 4
二分查找结果 5
第四章:分析讨论 6
算法分析 6
时间复杂度分析 6
附录 7
声明 7
:简介
问题的描述:
查找问题就是在给定的集合(或者是多重集,它允许多个元素具有相同的值)中找寻一个给定的值,我们称之为查找键。
对于查找问题来说,没有一种算法在任何情况下是都是最优的。有些算法速度比其他算法快,但是需要较多的存储空间;有些算法速度非常快,但仅适用于有序数组。查找问题没有稳定性的问题,但会发生其他的问题(动态查找表)。
在数据结构课程中,我们已经学过了几种查找算法,比较有代表性的有顺序查找(蛮力查找),二分查找 (递归,非递归)。
利用随机函数产生N个随机整数,利用顺序查找,二分法查找(递归,非递归),并统计每一种查找所消耗的时间。把查找花的时间排在表格里面。
第二章:算法规范int SeqSearch1(int r[ ], int n, int k)
3.1.while (i0 r[i]!=k);
3.2.循环 i--;
3.3.返回是否找到要查找的元素k;
二分法查找:
递归
int search(int a[],int n,int k)
Low=0,High=n-1; Mid=(Low+High)/2;
if ((Low=High)||(n==-1)) return -1
1.21 else if (a[Mid]==k) return Mid;
1.22 else if (a[Mid]g)
return (search(a,Mid-1,g))
return (search(a+Mid+1,n-Mid,g));
非递归
1 int BinarySearch (int a[],int n,int k)
1.1 Low=0; high=n-1;
1.2 while(lowhigh)
1.21 mid=(low+high)/2;
1.22 if (key==a[mid])
1.23 return mid查找到元素
1.3 if (keya[i])
1.31 low=middle+1
1.32 high=middle-1
1.4 return查找失败
第三章:测试结果
测试结果:请选择查找方式
顺序查找:
二分查找:
第四章:分析和讨论
(一)算法思想分析:
1.顺序查找:从表的一端向另一端逐个进行记录的关键字和给定值(要查找的元素)的比较,若某个记录的关键字和给定值比较相等,则查找成功,找到所查找记录;反之,若直至第一个记录,其关键字和给定值比较都不等,则表明表中没有所查记录,查找不成功。
2.二分查找:二分查找又称折半查找,二分查找首先要求待查找的表是有序表,如果要查找的元素是表的中间的那个元素,则找到要查找的元素,查找成功;如果要查找的元素比中间的那个元素小则使用相同的策略只在左边的区间查找就可以;如果要查找的元素比中间的那个元素大,则使用相同的策略在右边的区间进行查找;每次将待查找的元素的所在区间缩小一半.
分析:顺序查找平均长度为(n+1)附录:源代码(基于c语言)
#include stdio.h
#include math.h
#include stdlib.h
#includetime.h
#define N 40
#define k 1869
void main()
{
void ChooseSort(int a[],int n);
int SeqSearch1(int a[ ], int n, int key);//顺序查找//
int BinSearch2(int Array[],int SizeOfArray,int key/*要找的值*/);
int BinSearch1(int Array[],int low,int high,int key);//非递归查找//
int a[N],i;
for(i=1;i=N;i++)
{
a[i]=(int)rand();//获得随机数组
printf(%d ,a[i]);//输出无序随机数数组
}
printf(\n);
//printf(请输入查找元素key:\n);
//scanf(%d,key);
//printf(%d,k);
printf(\n);
printf(一下是各个查找算法的代号:\n);
printf(一,顺序查找\n);
printf(二,二分查找递归\n);
您可能关注的文档
- 古代文学复资习料.doc
- 古代汉语教大学纲.doc
- 古代汉语通讲论义.doc
- 古典—1677超核心词汇表.doc
- 古典概型四重类点题型.doc
- 古典音乐活动策划书 [2].doc
- 古树名木防雷技术规则.doc
- 古建传承—摄—影作品.docx
- 古诗两首-jiaoan.doc
- 古诗文填空[杨丽芳].doc
- 二零二四年度农机具租赁与农技支持合同3篇.docx
- 二零二四年度农机具共享租赁与销售承包合同3篇.docx
- 二零二四年度农户联保贷款合同范本——农业科技成果转化3篇.docx
- 二零二四年度农机产品智能化维修服务购销合同规范2篇.docx
- 二零二四年度农机具租赁与销售代理承包合同6篇.docx
- 二零二四年度农户小额贷款担保合作协议书3篇.docx
- 二零二四年度农机产品进出口合同范本2篇.docx
- 二零二四年度农机购销合同范本:农机租赁与销售合同范本:租赁期未满退租3篇.docx
- 二零二四年度农庄菜地租赁与农业废弃物资源化利用合同3篇.docx
- 二零二四年度农庄菜地租赁与农业高质量发展合作合同3篇.docx
文档评论(0)