Java上机实验报告(1)

这篇实验报告详细介绍了使用Java实现快速排序算法的过程,以及如何设计一个包括抽象类Student、本科生类Undergaduate和研究生类Postgraduate的面向对象程序。报告中讨论了算法思想,展示了代码实现,并总结了面向对象编程和重构的经验。
摘要由CSDN通过智能技术生成

一、任务简要描述

1、实现Java版本的快速排序。

2、编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类Person,并作为学生数据操作类Student 和教师数据操作类Teacher 的基类。

3、请设计 3 个类 , 分别是学生类 Student, 本科生类Undergaduate, 研究生类 Postgraduate, 其中 Student 类是一个抽象类 , 它包含一些基本的学生信息如姓名、所学课程、课程成绩等 , Undergraduate 类和 Postgraduate 都是 Student 类的子类 , 它们之间的主要差别是计算课程成绩等级的方法有所不同 , 研究生的标准要比本科生的标准高一些。假设某班级里既有本科生也有研究生 , 请编写程序统计出全班学生的成绩等级并显示出来。此题关键是设计一个学生数组 , 既能存放本科生对象 , 又能存放研究生对象。

二、问题及解决

1算法思想:基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(lo指向起始位置,hi指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就交换lohi位置的值,然后从前半部分开始扫秒,发现有元素大于基准点的值,就交换lohi位置的值,如此往复循环,直到lo>=hi,然后把基准点的值放到hi这个位置。一次排序就完成了。以后采用递归的方式分别对前半部分和后半部分排序,当前半部分和后半部分均有序时该数组就自然有序了。

排序过程:

 

输出结果:

 

2、

 

Person类:

 1 public class person {
 2     String name;
 3     String number;
 4         
 5     person(){ }
 6     person(String number, String name){
 7         this.number = number;
 8         this.name = name;
 9     }
10     public void setNumber(String n){
11         number = n;
12     }
13     public String getNumber(){
14         return number;
15     }
16     public void setName(String c){
17         name = c;
18     }
19     public String getName(){
20         return name;
21     }
22     public 
  • 10
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值