- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                
组的编号:28 作者姓名 : xxxxxx实验名称:各种查找算法的性能测试
组的编号:28
 作者姓名 : xxx
xxx
实验名称:各种查找算法的性能测试
算法设计与分析
完成日期:2013年9月9日星期日
                目录
第一章:简介	1
第二章:算法规范	2
数据结构	2
伪代码	3
第三章:算法测试	4
顺序查找结果	4
二分查找结果	5
第四章:分析讨论	6
算法分析	6
时间复杂度分析	6
附录	7
声明	7
:简介 
问题的描述:
查找问题就是在给定的集合(或者是多重集,它允许多个元素具有相同的值)中找寻一个给定的值,我们称之为查找键。
 对于查找问题来说,没有一种算法在任何情况下是都是最优的。有些算法速度比其他算法快,但是需要较多的存储空间;有些算法速度非常快,但仅适用于有序数组。查找问题没有稳定性的问题,但会发生其他的问题(动态查找表)。
在数据结构课程中,我们已经学过了几种查找算法,比较有代表性的有顺序查找(蛮力查找),二分查找 (递归,非递归)。
利用随机函数产生N个随机整数,利用顺序查找,二分法查找(递归,非递归),并统计每一种查找所消耗的时间。把查找花的时间排在表格里面。
            第二章:算法规范
数据结构:
 在所有的查找策略中,我们用了数组,函数作为主要的数据结构。
因为我们只是测试了不查找所需要的时间,也即分析了顺序查找,二分法查找(递归,非递归)的性能,没涉及其他复杂的操作,所以在这个项目中用了静态实现数组就可以。
伪代码如下所示
顺序查找:
1. 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)/2
       二分法查找平均长度为log2(n+1)-1
(二)时间复杂度分析
查找方法
时间复杂度
顺序查找
O(n)
二分法查找
O (logn)
 HYPERLINK ../代码 附录:源代码(基于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[]
                您可能关注的文档
- (课堂设计)2013-2014高中政治 第四课 生产与经济制度本课总结学案 新人教版必修.doc
 - (课堂设计)2014-2015高中数学 1.1 正弦定理和余弦定理学案 新人教A版必修.doc
 - (课堂设计)2014-2015高中数学 1.1.1 正弦定理学案(一)新人教A版必修.doc
 - (课堂设计)2014-2015高中数学 1.1.1 正弦定理学案(二)新人教A版必修.doc
 - (课堂设计)2014-2015高中数学 1.1.2 余弦定理学案(一)新人教A版必修.doc
 - (课堂设计)2014-2015高中数学 1.1.2 余弦定理学案(二)新人教A版必修.doc
 - (课堂设计)2014-2015高中数学 1.2 应用举例学案 新人教A版必修.doc
 - (课堂设计)2014-2015高中数学 1.2 应用举例学案(一)新人教A版必修.doc
 - (课堂设计)2014-2015高中数学 1.2 应用举例学案(二) 新人教A版必修.doc
 - (课堂设计)2014-2015高中数学 2.1 数列的概念与简单表示法学案(一) 新人教A版必修.doc
 
原创力文档
                        

文档评论(0)