网站大量收购独家精品文档,联系QQ:2885784924

数据结构实验报告——查找与排序.docxVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验报告——查找与排序

学 院: 计算机科学与技术 姓 名:学 号:专 业:日 期:一、问题分析此题是一道排序问题,排序的方法有很多种,此题我用的是堆排序,这是一种不稳定排序,但时间复杂度较低,比较快。计算机首先需要把文件中的数据读入内存中,用动态数组存储数据,然后建立数据结构,然后建立堆,比较子节点和父节点大小,降序排列,之后互换头结点与尾节点,再递归重复即可。查找的话,依次查找对比即可。详细设计2.1设计思想将股票的代码,交易日期,及开盘价等信息分别用不同的动态数组存储起来。因为要根据交易量的降序进行排序所以应将交易量的信息另外用一个float型的数组保存起来便于比较。 排序:使用一个下标数组用来模拟交易量的堆排序,将下标数组进行降序排序。再根据下标数组里的值将股票信息保存在新的文件中。 查看:因为录入文件时是先把股票的代码相同的信息存入数组的。所以查找时比较股票的代码,找到该代码后比较交易日期。最后输出交易量。2.2 存储结构及操作(1)存储结构(一般为自定义的数据类型,比如单链表,栈等。) vectorstring a;//股票代码 vectorstring b;//股票交易日期 vectorstring c;//股票开盘价_最高价_最低价_收盘价 vectorfloat d;//将交易量转换为float用于比较 不过有的会被舍去 vectorstring e;//交易量的原始数据 用于输出到排序的文件中涉及的操作(一般为自定义函数,可不写过程,但要注明该函数的含义。) read_file() 将文件信息分别保存在上述存储结构中 HeapAdjust(vectorlong x,long s,long n) 小顶堆的调整函数 HeapSort() 用堆排序进行交易量的降序排序并存储在指定文件中 serach() 查找某交易日期某股票的交易量2.3 程序整体流程堆排序示意图(由于堆排序描述时需要具体数据,所以只弄到示意图)三、用户手册1将股票文件先存入指定文件夹中,根据提示输入文件名字按回车即可 2先在指定文件夹新建你要保存的文件后将文件的名字输入 3根据提示输入股票代码及交易日期,以空格隔开。四、总结需要说明一下的是,这次实验我写的是c++代码。为什么用c++代码呢,主要是因为是最后一次实验了,需要有些纪念意义,更重要的是,c++代码比c代码简洁有效许多,我的电脑并不是很好,所以就选择了更快更简洁的c++代码。其实真正的原因是时间不够了,c++代码写的比较快,而且大一时写过类似的东西刚好用得上。最后一次了,希望助教大人高抬贵手,通融一二,在下不胜感激。五、结果程序正确运行的结果截图。注:abc.txt即原文件txt为新建文件源代码:#includeiostream#includefstream#includestring#includestdlib.h#includemath.h#includevector#includetime.husing namespace std; vectorstringa;//股票代码 vectorstringb;//股票交易日期 vectorstringc;//股票开盘价_最高价_最低价_收盘价vectorfloatd;//将交易量转换为float用于比较不过有的会被舍去vectorstringe;//交易量的原始数据用于输出到排序的文件中void HeapAdjust(vectorlongx,long s,long n){long x1=x[s];float x2=d[x[s]];for(long j=2*s;j=n;j*=2){ if(jnd[x[j+1]]d[x[j]])++j;//找出子节点的最小值if(x2=d[x[j]])//子节点的最小值大于当前值即可插入break; x[s]=x[j];//将子节点上调为父节点s=j;//进入下一深度节点的判断}x[s]=x1; } bool HeapSort(){ fstream file;//文件变量 vectorlong x;//存储下标 string name; cout输入要存的文件名endl; cinname; file.open(name.c_str()); if(!file){ cout不能打开指定文件endl; return false; } else{ time_t start=clock(); //开始计时 long n=d.size(); x.push_back(1);//x[0]不能用来建堆 for(long

文档评论(0)

celkhn5460 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档