预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

深圳大学实验报告课程名称:数据结构实验与课程设计实验项目名称:希尔排序学院:计算机与软件学院专业:指导教师:蔡平报告人:文成学号:2011150259班级:5实验时间:2012-12-17实验报告提交时间:2012-12-24教务部制一、实验目的与要求:目的:掌握哈希排序算法原理2.掌握哈希排序算法的实现方法要求:1.熟悉C++语言编程2.熟练编程实现哈希算法实验内容:问题A:数据结构实验--希尔排序题目描述给出一个数据序列,使用希尔排序算法进行从小到大的排序间隔gap使用序列长度循环除2直到1输入第一行输入t,表示有t个测试示例第二行输入n,表示第一个示例有n个数据第三行输入n个数据,都是正整数,数据之间用空格隔开以此类推输出每行输出每个示例排序后,从小到大的结果样例输入2611122644433355877555331444776662222样例输出6225511133344413377774445556662222实验步骤与过程:希尔排序是一种按照增量排序的方法。其中增量值是小于n的正整数。shell排序的基本思想是:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。源代码:A:#include<iostream>usingnamespacestd;intShellSort(intarray[],intn){intgap,i,j;for(gap=n/2;gap>=1;gap--){for(i=0;i<gap;i++){for(j=i+gap;j<n;j=j+gap){if(array[j]<array[j-gap]){inttemp=array[j];intk=j-gap;while(k>=0&&array[k]>temp){array[k+gap]=array[k];k=k-gap;}array[k+gap]=temp;}}}}return0;}intmain(){inttestnum,i,j;cin>>testnum;for(i=0;i<testnum;i++){intnum;cin>>num;int*array=newint[num];for(j=0;j<num;j++)cin>>array[j];ShellSort(array,num);for(j=0;j<num;j++)cout<<array[j]<<"";cout<<endl;}return0;}四、实验结果及数据处理分析:A:实验基本达到实验要求五、实验结论与体会:从这个实验中我学会使用哈希算法进行排序,虽然实现起来没有冒泡和插入排序简单。但实验数据比较多时,比前两者时间复杂度要小。因此能熟练使用各种排序方法失衡重要的。指导教师批阅意见:成绩评定:指导教师签字:年月日备注:注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。