实验八 排序技术的编程实现
更新时间:2023-12-29 16:35:01 阅读量: 教育文库 文档下载
实验八 排序技术的编程实现
【实验目的】
排序技术的编程实现 要求:
排序技术的编程实现(2学时,综合型),掌握排序技术的编程实现,可以实现一种,也可以实现多种。也鼓励学生利用基本操作进行一些应用的程序设计。
【实验性质】
综合性实验,其综合性体现在本实验的内容具有的实际应用价值,多种数据结构的综合应用,各种具有代表性的算法设计和程序实现。(学时数:2H)
【实验内容】
1. 2. 3. 4.
使用冒泡排序法设计一个排序程序。 使用快速排序法设计一个排序程序。 使用堆排序法设计一个排序程序。
鼓励同时开发多种排序的程序,并且用菜单管理。
【注意事项】
1. 建议把数据先存在文件中,避免调试程序时反复输入,同时增加程序的通用性。 2. 建议把排序的中间过程显示出来体现排序的原理和过程。
【思考问题】
1. 排序算法通常使用什么数据结构和存储结构?为什么? 2. 各种排序算法的效率分析和比较? 3. 快速排序主要使用什么思路? 4. 举出排序的应用范例?
【参考代码】(以下内容,学生任意选择一个完成即可)
(一) 提高篇
//利用冒泡排序,快速排序和堆排序完成一批数据的排序。 #include
void bubbleSort(int *list, int index)
{ //利用冒泡排序算法,完成对数组list中的index个数进行排序。
}
//快速排序程序构思: //1.读入欲排序的数值。 //2.使用快速排序法 // (1)设置左右端指针(i-左指针,j-右指针) // (2)设分割指针pivot
// (3)i往右找比pivot大时停止,j往左找比pivot小时停止 // (4)若i
// (5)pivot找到其位置,并打输出对调后的排序结果 // (6)排序pivot左边的元素 QuickSort(左边) // (7)排序pivot右边的元素 QuickSort(右边) //3.打印最终排序结果
void QuickSort(int *list,int left,int right,int index)
{ //利用快速排序算法,完成对数组list中的index个数进行排序。 }
void produce_data(int data[],int num) //随机产生一批数 { int i;
srand((unsigned)time(NULL)); for(i=0;i void produce1_data(int data[],int num) //随机产生一批数 { //专门用于堆排序,数据从data[1]开始存放 int i; srand((unsigned)time(NULL)); for(i=1;i<=num;i++) data[i]=rand()0; } void print_data(int data[],int num) //输出数据 { int i; int count; for(i=0;i void print1_data(int data[],int num) //输出数据 { //专门用于堆排序,数据从data[1]开始输出 int i; int count; for(i=1;i<=num;i++) { printf(\ count++; if(count==0) printf(\ } } void createHeap (int *heap, int root, int index) { int i,j; int temp; //于数值交换时的暂存变量 int finish; //判断堆是否建立完成 j=2*root; //子结点的index temp=heap[root]; //暂存heap的root值 finish=0; //默认堆建立尚未完成 while (j<=index && finish==0) { //找最大的子结点 if (j if (heap[j] finish=1; //堆建立完成 else { heap[j/2]=heap[j]; //父结点=目前结点 j=2*j; } } heap[j/2]=temp; //父结点=root值 } //堆排序程序构思: //1.读取数值存入二叉树数组list中 //2.将二叉树转成最大堆 //3.堆的最大值和数组最后一个数值交换 //4.其余数值进行堆重建,并打印目前排序结果 //5.重复3、4,直到所有值均已排序完成 //6.打印最终排序结果 void HeapSort(int *heap,int index) { //堆排序 int i,j,temp; for(i=(index/2);i>=1;i--) //将二叉树转成heap createHeap(heap,i,index); for(i=index-1;i>=1;i--) //开始进行堆排序 { temp=heap[i+1]; //heap的root值和最后一个值交换 heap[i+1]=heap[1]; heap[1]=temp; createHeap(heap, 1, i); //对其余数值重建堆*/ printf(\目前的排序为:\ //打印堆处理过程*/ for(j=1;j<=index;j++) printf(\ //printf(\ } } void showmenu() { //显示菜单 printf(\ 欢迎使用数据排序小软件\\n\ printf(\、冒泡排序\\n\ printf(\、快速排序\\n\ printf(\、堆排序\\n\ printf(\、退出程序\\n\ } void main() { int list[MAX]; //默认数组最大长度为20 int i,num; //数组索引/ int node; //读入输入值所使用的暂存变量 int choice; while(1) { showmenu(); printf(\ 请输入你的选择:\ scanf(\ switch(choice) { case 1: printf(\请输入需要排序的元素个数:\ scanf(\ produce_data(list,num); printf(\排序前的数据为:\\n\ print_data(list,num); bubbleSort(list,num); printf(\最终的排序结果为:\\n\ print_data(list,num); printf(\ system(\ system(\ break; case 2:printf(\请输入需要排序的元素个数:\ scanf(\ produce_data(list,num); printf(\排序前的数据为:\\n\ print_data(list,num); printf(\排序过程如下:\\n\ QuickSort(list,0,num-1,num); printf(\最终的排序结果为:\\n\ print_data(list,num); printf(\ system(\ system(\ break; case 3:printf(\请输入需要排序的元素个数:\ scanf(\ produce1_data(list,num); printf(\排序前的数据为:\\n\ print1_data(list,num); printf(\排序过程如下:\\n\ HeapSort(list,num); printf(\最终的排序结果为:\\n\ print1_data(list,num); printf(\ system(\ system(\ break; case 4: return; default: printf(\你的选择有误,请从新输入!\\n\ } } } (二) 挑战篇 设计一个小程序,实现所有排序算法的排序演示过程。 【实验小结】 (总结本次实验的重难点及心得、体会、收获) 得 分_____________ 评阅日期_____________ 教师签名__ __________
正在阅读:
实验八 排序技术的编程实现12-29
中共国家电网公司党组关于领导干部竞争上岗的暂行办法11-24
建设局质量技术监督局安监局苏建质(2003)67号关于印发《苏州市建06-03
亭子小学2012年度工作总结04-23
C语言职工信息管理系统课程设计09-17
物流行业货物重泡比怎么计算10-31
幼儿教师应该注意的100个细节08-12
网站制作流程方案 - 图文09-12
城市生态学实习指导书 - 图文10-15
2011质量工程师_中级_理论与实务笔记04-24
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 排序
- 编程
- 实验
- 实现
- 技术
- 香榭丽都施工组织设计 - 图文
- 湖南省农村危房改造项目申请表
- 某高新技术企业员工持股平台有限合伙协议
- 工信部高炉转炉产能换算表
- 二中未成年人思想道德建设工作实施法案
- 陈红艳名师工作室简报2
- 《会计案例》第三次作业
- FLASH选择题含答案
- 行动学习实践中的三大误区剖析
- 4300宽厚板车间工艺设计11
- linux实验报告 - 图文
- 表B.0.15 导线、地线(含OPGW)紧线施工检查及评定记录表(线线4)
- 模拟试题五答案
- 新员工车间级安全教育试题
- 2008年高考物理试题(四川卷答案)
- 2011年文化产业发展报告 - 政府管理篇4
- 外汇会计上岗考试题库(201512)
- 校园一卡通系统论文图书馆借阅系统论文
- 一年级数学下册第六单元教案
- 安徽省药品经营许可证管理办法实施细则