交换排序的设计与实现.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
题 目: 交换排序的设计与实现 初始条件: 理论:学习了《数据结构》课程,掌握了基本的数据结构和常用的算法; 实践:计算机技术系实验室提供计算机及软件开发环境。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1、系统应具备的功能: (1)可最多输入50名学生的三门成绩; (2)利用冒泡排序来实现平均成绩的排序。 2、数据结构设计; 3、主要算法设计; 4、编程及上机实现; 5、撰写课程设计报告,包括: (1)设计题目; (2)摘要和关键字; (3)正文,包括引言、需求分析、数据结构设计、算法设计、程序实现及测试、不足之处、设计体会; (4)结束语; (5)参考文献。 时间安排: 2007年7月2日-7日 (第18周) 7月2日 查阅资料 7月3日 系统设计,数据结构设计,算法设计 7月4日-5日 编程并上机调试 7月6日 撰写报告 7月7日 验收程序,提交设计报告书。 指导教师签名: 2007年7月2日 系主任(或责任教师)签名: 2007年7月2日 起泡排序实现学生成绩的排序 摘要:本程序是利用起泡排序的方法来实现学生各门学科成绩的排序,其中学生的成绩信息是由自己输入的,并根据学生信息可排列出每门成绩的最高分、最低分和平均分。 关键字:比较,逆序,交换,循环结构 0.引言 起泡排序法就是一种交换排序法:在一组待排序的数据中,两两比较数据的大小,如果发现第一个记录的关键字大于第二个的则将两个记录交换,然后比较第二个记录和第三个记录的关键字,依次类推。起泡排序结束的条件应该是反复进行这样的比较至到比较过程中没有交换记录的操作。其总时间复杂度为O(n*n)。 起泡排序法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是“最轻”元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。学生成绩的数据来源于程序的结构数组,定义若干个(不少于10)学生的记录,学生记录包括:学号、姓名、三至五门科目的考试成绩; 使用一种排序算法对上述某门科目的成绩进行排序; 将排序后的成绩,以每个学生记录的形式显示输出; 求出每门科目的最高分、最低分和平均分的信息; 输出的数据要清晰,排列整齐。struct few { float a; float b; float c; }; struct student { int num; char name[30]; float ave; struct few score; }; 3.算法设计 /* Note:Your choice is C IDE */ #include "stdio.h" #include "string.h" #define MAX 50 //最大人数 struct few { float a; float b; float c; }; struct student { int num; char name[30]; float ave; struct few score; }; void display(int,char *,float); int in(struct student *,int); int del(struct student *,int); void arr(struct student *,int); void main() { /*设置一个结构数组stu用于保存学生信息, count用于计算当前学生数。 */ struct student stu[50]; int i=0,count=0,set=0; float sum=0; char ans; ans='y'; /*循环输入学生信息保存到结构数组 stu[MAX]里面。*/ do { printf("\n请输入学号: "); scanf("%d",&stu[i].num); printf("\n请输入姓名: "); fflush(stdin); gets(stu[i].name); printf("\n成绩1: "); s

文档评论(0)

yan666888 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档