数据结构查找算法课程设计.doc

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构查找算法课程设计

存档编号: 西安******** 课程设计说明书 设计题目: 查找算法性能分析 系别: 计算机学院 专业: 计算机科学 班级: 计科*** 姓名: 王*** (共 页) 2015年 01月07 日 ***** 计算机科学 专业课程设计任务书 姓名: *** 班级: 计科**** 学号: **** 一、设计或实践题目 查找算法性能分析 二、内容及要求 设计程序,对比分析顺序查找、折半查找、索引查找、二叉排序树查找和散列查找五种查找算法的性能 1、测试数据的个数不少于50个; 2、对每一种查找算法设计实现适应的存储结构; 3、输出每种查找算法的查找成功时的平均长度 三、完成形式 1、设计报告; 2、源程序 四、系(部)审核意见 指导教师: **** 发题日期: 2015-01-05 完成日期: 2015-01-09 一 需求分析 1问题描述 查找又称检索,是指在某种数据结构中找出满足给定条件的元素。查找是一种十分有用的操作。而查找也有内外之分,若整个查找过程只在内存中进行称为内查找;若查找过程中需要访问外存,则称为外查找,若在查找的同时对表做修改运算(插入或删除),则相应的表成为动态查找表,反之称为静态查找表。 由于查找运算的主要运算是关键字的比较,所以通常把查找过程中对关键字的平均比较次数(也叫平均查找长度)作为一个查找算法效率优劣的标准。平均查找程度ASL定义为: ASL=∑PiCi(i从1到n) 其中Pi代表查找第i个元素的概率,一般认为每个元素的查找概率相等,Ci代表找到第i个元素所需要比较的次数。 查找算法有顺序查找、折半查找、索引查找、二叉树查找和散列查找(又叫哈希查找),它们的性能各有千秋,对数据的存储结构要求也不同,譬如在顺序查找中对表的结果没有严格的要求,无论用顺序表或链式表存储元素都可以查找成功;折半查找要求则是需要顺序表;索引表则需要建立索引表;动态查找需要的树表查找则需要建立建立相应的二叉树链表;哈希查找相应的需要建立一个哈希表。 2基本要求 输入的形式和输入值的范围; 在设计查找算法性能分析的过程中,我们调用产生随机数函数: srand((int)time(0)); 产生N个随机数。 注:折半查找中需要对产生的随机数进行排序,需要进行排序后再进行输入,N50; 输出形式; 查找算法分析过程中,只要对查找算法稍作修改就可以利用平均查找长度的公式: ASL=∑PiCi(i从1到n) 输出各种查找算法的平均查找长度。 注:平均查找长度=总的平均查找长度/N; 程序所能达到的功能 通过输出几种查找算法的ASL,我们很显然能得在数据量较小时(N100)我们在实现静态查找时应该选择如何调用哪种查找算法。 二 概要设计 说明本程序中用到的所有抽象数据类型的定义。主程序的流程以及各程序模块之间的层次(调用)关系。 数据结构 顺序查找:在进行顺序查找顺序表类型定时需要定义typedef int KeyType; 顺序表类型为SeqList类型。 typedef NodeType SeqList【MaxSize】;/ 它的基本思路是:从表的一端开始,顺序扫描线性表,依次将扫描到的关键字和给定值k相比较,若当前扫描到的关键字与k相等,查找成功。 折半查找:在进行顺序查找顺序表类型定时需要定义typedef int KeyType,并且需要调用排序函数对其进行排序。 折半查找类型为SeqList类型。 typedef NodeType SeqList【MaxSize】; 折半查找又叫二分查找,效率较高,但折半查找要求被查找的表示顺序表,它的基本思路是:设R【low…..high】是当前的查找区间,首先确定该区间的中点位置mid= ┖(low+high)/2 ┘,然后将待查的k值与R【mid】.key。 如果中点值的值是k,返回该元素的逻辑符号; 如果中点值k,则中点值之后的数都大于k,所以k值在该表的左边,所以确定一个新的查找区间; 如果中点值k,则中点值之后的数都小于k,k值在该表的右边,再在该表的右边确定一个新的查找区间; 依次循环。 索引查找:/索引存储结构是在存储数据的同时还建立附加的索引表,索引表包括关键字和地址。索引表的数据类型 KeyType key、int link,link代表对应块的起始下标。 typedef IdxType IDX[MaxSize] //索引表的类型 分块查找又称索引顺序查找,它的性能介于顺序查找和折半查找之间的一种算法,它的分块的思想是: 将表均

文档评论(0)

haocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档