- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构与算法验报告_内排序
数据结构与算法实验报告
实验名称: 二分插入排序及其性能
姓 名: 学 号: 专 业: 指导教师: 日 期: 2012-5-22 一、实验目的
了解二分插入排序与直接插入排序的关系;掌握二分插入排序算法的实现;掌握算法运行时间的测量。
二、实验内容
实现二分插入排序算法,并将它和直接插入排序算法进行性能比较,然后用理论分析支持你的结论。
三、实验环境
Window XP操作系统;
Microsoft VisualC++编程环境;
Pentium R Dual-Core cpu;
2.50GHz,2.00GB内存
四、实现
1.类间的关系
提示:总排序类、插入排序类、直接插入排序类、二分插入排序类间的关系
答:父类是:总排序类
子类是:插入排序类 和二分插入排序类
父类是:插入排序类
子类是:直接插入排序类
2.二分插入排序类排序函数sort的实现
结果:
3.性能测试程序的主要代码
//二分法插入排序,Array[]为待排序数组,n为数组长度
template class Record,class Compare
void BinaryInsertSorter Record,Compare ::Sort Record Array[], int n Record TempRecord; //用来保存当前待插入纪录的临时变量
int left,right,middle; //记录已排好序序列的左、右、中位置
for int i 1;i n;i++ //插入第i个记录 TempRecord Array[i]; //将当前待插入记录保存在临时变量中
left 0; right i-1; //记录已排好序序列的左右位置
while left right //开始查找待插入记录的正确位置 middle left+right /2; //记录中间位置 //如果待插入记录比中间记录小,就在左一半中查找,否则,在右一半中查找 if Compare::lt TempRecord, Array[middle] right middle-1; else left middle+1; //将前面所有大于当前待插入记录的记录后移
for int j i-1; j left; j -- Array[j+1] Array[j]; Array[left] TempRecord; //将待插入记录回填到正确位置 五、实验数据及结论
1.实验数据及分析
实验过程的描述。
数组规模 1k 10k 100k 100k正序 100k逆序 数组1 数组2 数组1 数组2 数组1 数组2 直接插入排序时间 0.015 0.015 0 0 91.75 91.719 0 71.603 二分插入排序时间 0 0 0 0 9.375 9.36 0 0.901 2.实验结论
答:1、当输入的数组较小时,两种排序算法用时相差不大。
2、但是,当输入的数组较大时,两种算法的区别就出来了,而二分插入排序时间相对于直接插入排序时间要小得多。说明对于比较大的数组用二分插入排序法比较适合。
3、当输入序列是正序时,直接插入排序算法与二分插入排序算法所用的时间相等。
4、当输入的排序为逆排序时,二分插入排序要优于直接插入排序。
5、二分插入排序法,处理逆序的时间比正序的时间要长。
六、理论分析
答:使用二分查找插入位置尽管总的移动元素次数不可能减少,但是往往可以减少平均搜索长度,可以减少总的平均比较次数。二分插入排序的平均时间复杂度为O n2 ,最坏情况下的时间复杂度为 n2 ,当待排序序列已经有序时,排序时间复杂度为O nlogn 。空间复杂度为O 1 。直接插入排序应用场合是短序列、基本有序的数据,而实验测试的记录很多,已经不是短序列,记录的比较和移动次数也很多,时间代价的分析复杂一些,空间复杂度也大,因此所用的时间比较长。
enforced thermal insulation starts checking system, issued by the thermal insulation construction before you start to notice, transfer inspection of upper and lower operation and transfer of records. For outdoor operation, pipeline equipment to effectively carry out the insulation waterproof measures fail t
原创力文档


文档评论(0)