




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件基础上机题之排序算法PAGEPAGE1
年级10级班号5
学号
10064132专业自动化
姓名
刘满实验名称排序算法的相关操作实验类型设计型综合型创新型实验目的或要求实验目的:1.掌握基本的文件读取操作;2.掌握快速排序、冒泡排序算法的实现。实验要求:1.编程实现快速排序、冒泡排序各算法函数;2.编写主函数对各排序函数进行测试实验原理(算法流程)开始
开始输出主菜单选择界面输出主菜单选择界面输入x的值其他:输入x的值输入项无效,请重新输入!x=?x=?1234快速排序退出冒泡快速排序退出冒泡排序显示成绩输入rturn的值输入rturn的值rturn=N假rturn=N真结束结束组内分工(可选)无实验结果分析及心得体会成绩评定教师签名:2010年月日#include"stdafx.h"#include"stdio.h"#include"stdlib.h"#include<time.h>#definen8/*宏定义录入学生成绩的个数*/#defineFILE_PATH"f:\\grade.txt"/*对文件路径进行宏定义*/typedefintKeyType;typedefstruct{ KeyTypegrade; charname[20];}RecType;RecTypeR[n];voidshowagrade();/*读取显示成绩*/voidBubblesort(RecTypeR[]);/*对学生成绩进行冒泡排序,并输出*/voidQuicksort(RecTypeR[],intlow,inthigh);/*对学生成绩进行快速排序,并输出*/intPartition(RecTypeR[],inti,intj);/*分治算法*/voidmenu(){ printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n"); printf("★1.读取显示成绩★\n"); printf("★2.对学生成绩进行冒泡排序,并输出★\n"); printf("★3.对学生成绩进行快速排序,并输出★\n"); printf("★4.退出★\n"); printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n");} voidmain(){ inti,x,low,high; charrturn; menu(); while(1) { printf("请选择相应功能:"); fflush(stdin); scanf("%d",&x); switch(x) { case1: //仅显示成绩 showagrade(); printf("仅显示成绩完成,是否继续?(N退出,任意键继续)\n"); fflush(stdin); scanf("%c",&rturn); if(rturn=='N') exit(0); break; case2://对学生成绩进行冒泡排序,并输出 Bubblesort(R); printf("\n"); printf("对学生成绩进行冒泡排序,并输出完成,是否继续?(N退出,任意键继续)\n"); fflush(stdin); scanf("%c",&rturn); if(rturn=='N') exit(0); break; case3://对学生成绩进行快速排序,并输出 Quicksort(R,1,7); for(i=1;i<=7;i++) printf("%d\t",R[i]); printf("\n"); printf("对学生成绩进行快速排序,并输出完成,是否继续?(N退出,任意键继续)\n"); fflush(stdin); scanf("%c",&rturn); if(rturn=='N') exit(0); break; case4: return; default: printf("输入选项无效!请重新输入!\n"); } }}voidshowagrade()/*读取显示成绩*/{ FILE*fp; fp=fopen(FILE_PATH,"r+");/*获得只读文件的地址*/ chartempbuf[100];/*定义字符数组*/ fgets(tempbuf,100,fp);/*从fp指向的文件中读取100个数据到tempbuf*/ charname[20]; intgrade; inti=1; while(i<n) { fscanf(fp,"%*s%d",&R[i]); printf("%d\t",R[i]); i++; } printf("\n"); fclose(fp);}voidBubblesort(RecTypeR[])/*对学生成绩进行冒泡排序,并输出*/{ inti,j,flag=0; RecTypeq; for(i=1;i<7;i++) { for(j=6;j>=i;j--) if(R[j+1].grade<R[j].grade)/*如果R[j+1].grade<R[j].grade,则交换两数据的位置*/ { R[0]=R[j+1]; R[j+1]=R[j]; R[j]=R[0]; flag=1;/*flag=1标志数据进行过移位*/ } if(!flag)/*flag=0说明该组数据原本就是按顺序排定,此时返回系统*/ return; } for(i=1;i<=7;i++) printf("%d\t",R[i]);}voidQuicksort(RecTypeR[],intlow,inthigh)/*对学生成绩进行快速排序,并输出*/{ intpivotpos,i; if(low<high) { pivotpos=Partition(R,low,high);/*调用分治算法*/ Quicksort(R,low,pivotpos-1);/*用递归法进行快速排序*/ Quicksort(R,pivotpos+1,high); }}intPartition(RecTypeR[],inti,intj)/*分治算法,找到基准记录的位置,供快速排序调用*/{ RecTypepivot=R[i]; w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业如何通过智能仓储提升竞争力
- 教育心理学视角下的学生成效评估体系构建
- 基础护士重症科生命支持技术考试题库及答案
- 医疗辅助教育探索新型教育模式
- 中职政治教学课件
- 在线考试系统的未来发展及挑战分析
- 教育心理学在促进教师与学生关系和谐中的作用研究
- 福建省普通高中2025年高二物理第二学期期末监测试题含解析
- 孝感市重点中学2025届高一物理第二学期期末达标检测模拟试题含解析
- 文科文综试题及答案
- 小学数学-二年级升三年级暑假数学作业-口算竖式脱式应用题
- 2025年中国过滤分离器行业市场发展现状及投资方向研究报告
- 暑期教研活动方案
- 学堂在线 毛泽东思想和中国特色社会主义理论体系概论 期末考试答案
- 托管老师岗前培训
- GB/T 45743-2025生物样本细胞运输通用要求
- 浙教版(2024)七年级上册《第1章 有理数》单元测试卷-学生用卷
- 2025至2030中国素食食品行业发展分析及发展趋势分析与未来投资战略咨询研究报告
- 2025年天津出租车考试资料
- 2024年广州市荔湾区社区专职招聘笔试真题
- 净化磷酸装置水联动试车方案
评论
0/150
提交评论