山东大学面向对象第二次实验排序实验报告
更新时间:2024-03-10 02:54:01 阅读量: 综合文库 文档下载
- 山东大学面向对象期末考试推荐度:
- 相关推荐
面向对象实验报告
排序
学院:计算机科学与技术学院学号:************
姓名:*** 班级:**级**班
一、 实验要求
1. 可以对任何简单类型和任意对象进行排序; 2. 可以支持升序、降序、字典排序等多种顺序要求; 3. 可以随意增加排序算法和顺序要求,保证其他程序不修改; 4. 减少程序代码中逻辑上的冗余;
5. 至少用两种方案编程实现该程序包,并说明两个方案的优缺点; 6. 提交设计报告,包括:使用UML设计的类图;主要程序代码说明;方
案优缺点比较。
二、 实验环境
Eclipse、JDK6.0、windows7。
三、 需求分析
需要实现各种排序算法,各种排序要求。而且要便于后来的对排序算法和排序要求的添加。尽量减少代码的冗余。两种实现方案。
四、 类的设计
方案一: UML设计类图
代码说明:
主要利用java的 Comparator类实现对象的比较和多种顺序。在Sort类的构造方法的参数列表中包含需要排序的数组和Comparator比较器对象。因为参数列表中的数组类型是Object,所以支持基本类型和任意类型的对象进行比较。
想要增加排序算法,只需继承Sort 类,然后在新类中编写相应的排序算法即可。
因为排序方式是由comparator比较器对象中的compare方法决定的,所以想使用什么样的顺序只需改写comparator中的compare方法即可。
具体实现代码如下: /* BubbleSort */
import java.util.Comparator;
public class BubbleSort extends Sort {
public BubbleSort(Object[] a,Comparator b) {
super(a,b);
public Object[] sort() {
Object temp;
int n=a.length; for(int j=0;j for(int i=0;i if(b.compare(a[i],a[i+1])==1) { } temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } this.b=b; } } } } return a; /* InsertSort */ import java.util.Comparator; public class InsertSort extends Sort { public InsertSort(Object[] a, Comparator b) { public Object[] sort() { int n=a.length; for(int i=1;i Object temp=a[i]; } super(a, b); int j; for(j=i-1;j>=0&&b.compare(temp, a[j])==1;j--) { } } } } a[j+1]=a[j]; a[j+1]=temp; return a; /* QuickSort */ import java.util.Comparator; public class QuickSort extends Sort { public QuickSort(Object[] a, Comparator b) { public Object[] sort() } super(a, b); // TODO Auto-generated constructor stub { private int getMiddle(Object[] list,int low,int high) { Object tmp = list[low]; while(low while(low } list[low]=list[high]; while(low } list[low]=tmp; } list[high]=list[low]; low++; high--; } quickSort(a,0,a.length-1); return a; } return low; private void quickSort(Object[] list,int low,int high) { if(low } } int middle = getMiddle(list,low,high); quickSort(list,low,middle-1); quickSort(list,middle+1,high); } 方案二: UML设计图: 代码说明: 主要利用java的Comparable接口实现。在Sort类的构造方法里将接收的任意类型数组转化成为Comparable类型,需要什么排序类型就继承Comparable相应的实现类。通过实现compareTo方法实现比较和排序。想增加排序方法,新建一个类继承Sort即可。想新增排序方式,新增一个继承类让排序类实现即可。 具体实现代码: 排序类类似方案一,去除Comparator改为实现接口,并实现compareTo方法 接口: Public abstract class Compa implements Comparable { protect Object a,b; public int compareTo(); } /* ascOrder */ public class Asc extends Compa { public Object[] Asc(); public int compareTo() { }; } /* descOrder */ public class Desc extends Compa { public Object[] Desc(); public int compareTo() { }; } //具体实现 //具体实现 /* dictionartOrder */ public class Dic extends Compa { public Object[] Dic (); public int compareTo() { }; } //具体实现 五、 两种排序方案的比较 第一种方案利用了工厂类的思想,使用排序方法前只需要构造相应的comparator比较器。不过如果排序算法较多,相对应的子类就会很多,这样就增加了类的复杂程度,不利于维护。同时这种排序方案效率不高。 第二种方案通过继承接口的不同的实现类实现不同顺序的排序。不过这样实现的结构相对复杂,且效率不高。 这两种方案的共同缺点是效率不高,因为这两种方案都没有区别基本数据类型和对象数据类型,而只是统一地用了同一种排序方案。但优点是很好地重用了排序算法,真正做到了同样的算法绝不写第二遍的目标,但是在实际运用中,效率问题却也是不可忽视的。 /* dictionartOrder */ public class Dic extends Compa { public Object[] Dic (); public int compareTo() { }; } //具体实现 五、 两种排序方案的比较 第一种方案利用了工厂类的思想,使用排序方法前只需要构造相应的comparator比较器。不过如果排序算法较多,相对应的子类就会很多,这样就增加了类的复杂程度,不利于维护。同时这种排序方案效率不高。 第二种方案通过继承接口的不同的实现类实现不同顺序的排序。不过这样实现的结构相对复杂,且效率不高。 这两种方案的共同缺点是效率不高,因为这两种方案都没有区别基本数据类型和对象数据类型,而只是统一地用了同一种排序方案。但优点是很好地重用了排序算法,真正做到了同样的算法绝不写第二遍的目标,但是在实际运用中,效率问题却也是不可忽视的。
正在阅读:
山东大学面向对象第二次实验排序实验报告03-10
知到网课答案管理学山东联盟山东青年政治学院版课后作业答案.docx06-07
2019-2020最新苏教版1年级上册期末试卷(10)03-09
工作分析练习题(五)10-01
卫校领导班子述职述廉报告09-27
2013年5月市场与市场营销试题及答案06-02
【必备】合同协议书模板(合集5篇)08-22
人防工程监理检查工作记录表02-01
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 山东大学
- 实验
- 排序
- 面向
- 对象
- 报告
- 江西省2016年房地产估价师《案例与分析》:房地产强制拍卖估价的
- (15年)陕西省历年高考各批次录取分数线
- 施工电梯拆除作业指导书
- 规章制度党务事务公开制度
- 《隆中对》“复出”的背后
- 寡人之于国也默写测试
- 乘法估算教学反思
- 引起幼儿注意分散的原因
- 4、辽油供电公司线损管理办法(试行)
- 贵州省建筑施工企业安全生产许可证有效期满延期工作的通知
- 全国设计院
- ()人事文员转正申请书(多篇汇编)
- 0144《教育测量与评价》2013年6月期末考试指导
- 人力资源管理流程图(全套哦)
- 传奇3私服的一些地图走法
- 2、几百几十数乘一位数的口算
- 房地产基础知识培训资料(更新版)
- 现代图书馆设计理念
- 少数民族地区特色农产品营销模式创新:社区直销模式
- 第07章习题-部分答案