




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第页 北京邮电大学电信工程学院 第页 数据结构实验报告 1.实验要求 (1)实验目的 通过选择下面两个题目之一,学习、实现、对比各种排序算法,掌握各种排序算法的优劣,以及各种算法使用的情况。 (2)实验内容 使用简单数组实现下面各种排序算法,并进行比较。 排序算法: 1、插入排序 2、希尔排序 3、冒泡排序 4、快速排序 5、简单选择排序 6、堆排序(选作) 7、归并排序(选作) 8、基数排序(选作) 9、其他 要求: 1、测试数据分成三类:正序、逆序、随机数据 2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动次数(其中关键字交换计为3次移动)。 3、对于这三类数据,比较上述排序算法中不同算法的执行时间,精确到微秒(选作) 4、对2和3的结果进行分析,验证上述各种算法的时间复杂度 编写测试main()函数测试排序算法的正确性。 2.程序分析 2.1存储结构 顺序表: 示意图: a0a1a2a3a4a5a6a7 2.2关键算法分析 测试数据的产生:正序、逆序、随机数据 用两个数组实现乱序、顺序以及逆序数据的排序。 基本思想为:随机序列产生一个指定长度的乱序序列,然后通过memcpy()函数拷贝到第二个数组里,第二个数组作为乱序序列的保存数组,每次对第一个数组进行排序,之后拷贝第二个数组中的乱序序列到第一个数组,实现各次乱序排列。只要算法正确(第一步可以检验),之后顺序排列只需反复对第一个数组进行操作即可,再后用第二个数组保存逆序数组,然后同样在每次排序之后复制第二数组存储的乱序序列到第一组,对第一组反复排序即可。 <1>pRandom1=newlongint[Max+1];pRandom2=newlongint[Max+1]; <2>srand((unsigned)time(NULL));for(inti=1;i<=Max;i++)pRandom2[i]=rand(); <3>memcpy(obj.pRandom1,obj.pRandom2,(Max+1)*sizeof(longint)); 排序算法: <1>插入排序:依次将待排序的序列中的每一个记录插入到先前排序好的序列中,直到全部记录排序完毕。 /1/intj=0; /2/for(inti=2;i<=Max;i++)parray[0]=parray[i];comparetimes[0]++; /4/parray[j+1]=parray[0];movetimes[0]+=2; 示意图: r1,r2,r3,…,ri-1,ri,ri+1,…,rn 有序区待插入无序区 <2>希尔排序:先将整个序列分割成若干个子列,分别在各个子列中运用直接插入排序,待整个序列基本有序时,再对全体记录进行一次直接插入排序。 intSort::ShellSort(longintparray[]) {intj=0; for(intd=Max/2;d>=1;d/=2) {for(inti=d+1;i<=Max;i++) {parray[0]=parray[i]; comparetimes[1]++; for(j=i-d;j>0&&parray[0]<parray[j];j-=d) {parray[j+d]=parray[j]; movetimes[1]++;} parray[j+d]=parray[0]; movetimes[1]+=2;}} return0;} <3>冒泡排序:两两比较相邻记录的关键码,如果反序则交换,直到没有反序记录为止。 intSort::BubbleSort(longintparray[]) {intexchange=Max; intbound,j; while(exchange) {bound=exchange; exchange=0; for(j=1;j<bound;j++) {comparetimes[2]++; if(parray[j]>parray[j+1]) {parray[0]=parray[j]; parray[j]=parray[j+1]; parray[j+1]=parray[0]; exchange=j; movetimes[2]+=3;}}} return0;} 示意图: r1,r2,r3,…,ri-1,ri,ri+1,…,rn 反序则交换有序区 <4>快速排序:首先选择一个基准,将记录分割为两部分,左支小于或等于基准,右支则大于基准,然后对两部分重复上述过程,直至整个序列排序完成。 intSort::QuickSort(longintparray[]) {QuickSortR

王子****青蛙
实名认证
内容提供者


最近下载
最新上传
浙江省宁波市2024-2025学年高三下学期4月高考模拟考试语文试题及参考答案.docx
汤成难《漂浮于万有引力中的房屋》阅读答案.docx
四川省达州市普通高中2025届第二次诊断性检测语文试卷及参考答案.docx
山西省吕梁市2025年高三下学期第二次模拟考试语文试题及参考答案.docx
山西省部分学校2024-2025学年高二下学期3月月考语文试题及参考答案.docx
山西省2025年届高考考前适应性测试(冲刺卷)语文试卷及参考答案.docx
全国各地市语文中考真题名著阅读分类汇编.docx
七年级历史下册易混易错84条.docx
湖北省2024-2025学年高一下学期4月期中联考语文试题及参考答案.docx
黑龙江省大庆市2025届高三第三次教学质量检测语文试卷及参考答案.docx