logo资料库

数据结构排序实验报告.docx

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
南 昌 大 学 科 学 技 术 学 院 信 息 学 科 部 计 算 机 系 实 验 报 告 课程名称: 数据结构 开课学期: 18~19 第一学期 专 学 姓 业: 计算机科学与技术 173 号: 名: 指导教师: 日 期: 2018.12.3
专业课程实验报告五 专 业:计算机科学与技术 姓 名: 学 号: 实验日期:2018-12-03 实验类型: 验 证 (演示、验证、综合、设计) 实验 名称 实 验 目 的 实验 要求 实 验 内 容 ( 步 骤、方 法) 内部排序的综合应用 1、掌握排序的基本概念和各种排序方法的特点,并能加以灵活应用; 2、掌握各种排序(直接插入,希尔,冒泡,快速排序,简单选择,堆排 序等)的方法及其性能分析方法; 3、能在解决实际问题时灵活应用。 1、在开始本实验之前,请回顾教科书的相关内容。 2、需要准备一台装有 Windows 操作系统并具有命令提示符操作界面的计 算机,并系统内安装有能正常运行的 Visual C++6.0 或 Turbo C2.O 编程环境。 题目:编写完整程序,完成以下两个任务: 2 产生 10 个 1 ~999 之间的随机整数,并存放在数组 R 中; ②分别用简单插入排序、直接选择排序、冒泡排序、希尔排序和快速排 序进行排序并输出结果。 1、源程序如下: #include #include #include #define #define typedef typedef MAX num int struct "stdio.h" "stdlib.h" 200 10 datatype; { int key; datatype other;
*s1,s[MAX]; }rectype; rectype insert_sort(r) rectype {int r[]; i,j,n=num; for(i=1;i<=n;i++) { r[0]=r[i]; j=i-1; while(r[0].key=i;j--) if(r[j].key
{int i,n,jump,change,temp,m; jump=num;n=num; while(jump>0) { jump=jump/2; change=0; for(i=1;i<=n-jump;i++) do{ { m=i+jump; if(r[i].key>r[m].key) { temp=r[m].key; r[m].key=r[i].key; r[i].key=temp; change=1;} } }while(change==1); } }//希尔排序 partition(r,s,t) int rectype int {int s,t; r[]; i,j;rectype temp; i=s;j=t;temp=r[i]; do{while((r[j].key>=temp.key)&&(i
法) srand(time(NULL)); for(i=1;i<=num;i++) a[i]=rand()%1000+1; printf("\n\n\t\t\t 分类排序之前是:\n\n\t"); for(i=1;i<=num;i++) {printf("%6d",a[i]); if(i%10==0) printf("\n\t"); } printf("\n"); } void {int create() b[MAX]; range=1000,i; int creat_randnum(b,range); for(i=1;i<=num;i++) s[i].key=b[i]; s1=s; } print_record(r) rectype {int r[MAX]; i; printf("\n\t\t\t 分类排序之后是:\n\n\t"); for(i=1;i<=num;i++) {printf("%6d",r[i].key); if(i%10==0) printf("\n\n\t"); }getchar();} int { menu_select() int kk; printf("分类排序法的比较----主动模块:\n\n"); printf("\t\t\t1. printf("\t\t\t2. printf("\t\t\t3. printf("\t\t\t4. printf("\t\t\t5. printf("\t\t\t0. do 简单插入排序\n"); 直接选择排序\n"); 冒泡排序\n"); 希尔排序\n"); 快速排序\n"); 退出\n"); { printf("\n\t\t\t 请在 0——5 选择:"); scanf("%d",&kk); }while((kk<0)||(kk>5)); return kk;} main() { int do { kk; kk=menu_select();
实 验 内 容 ( 步 骤、方 法) create(); if(kk!=0) switch(kk) {case 1:{insert_sort(s1);break;} 2:{select_sort(s1);break;} 3:{bubble_sort(s1);break;} 4:{shell_sort(s1);break;} 5:{quick_sort(s1,1,num);break;} 0:exit(0); case case case case case }print_record(s1); }while(kk!=0); } 2.程序运行主要界面如图(1)~(6)所示: 图(1)
实 图(2) 验 内 容 ( 步 骤、方 法) 图(3) 图(4)
实 验 内 容 ( 步 骤、方 法) 图(5) 图(6)
分享到:
收藏