《Java语言程序设计》课程设计报告 - 排序
更新时间:2023-11-12 15:26:01 阅读量: 教育文库 文档下载
JAVA语言程序设计课程设计报告书
院系名称 计算机与网络安全学院 专业班级 2015级软件工程3班 学号 姓名 指导教师 完成时间 2016年12月1-2号
目 录
1.系统功能及任务描述 1.1系统总体功能描述 1.2主要任务描述 2.系统的实现 3.系统的测试 4.总结
4.1自我评价及收获
4.2有待解决的问题及进一步完善的思路 5.参考文献 6.附录(代码附后)
1.系统功能及任务描述
1.1系统总体功能描述
本课程设计主要功能就是利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。
1.2主要任务描述
1) 至少采用两种方法实现上述问题求解(提示,可采用的方法有插入排序、冒泡排序、选择排序、交换排序等)。并把排序后的结果保存在不同的文件中。
2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。
3) 如果采用4种或4种以上的方法者,可适当加分。
2.系统的实现
2.1开发环境
2.1.1工具
Eclipse:版本 Mars.1 Release (4.5.1),windows 64位
JDK:版本jdk-7u51-windows-x64.exe
2.1.2 电脑机型
华硕R556L,系统64位
2.2界面设计
界面采用Swing轻量级组件开发,在1个JFrame窗体中放置5个JLabel标签,5个JButton按钮,3个JTextField文本框。
2.3 类设计
2.4 主要代码说明
2.4.1 主要按钮触发事件
2.4.1.1 “确定”按钮
给“确定”按钮添加事件监听器addActionListener方法,内部类里实现actionPerformed(ActionEvent e)方法,获取文本框JTextField的数据,然后产生随机数,用LinkedList集合存储进RandomNumber.txt文件,方便增加删除。
//确定按钮事件
jButton_confirm.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) { // TODO 自动生成的方法存根
//集合,用于存储数据
LinkedList
LinkedList
//获取文本框数据 int begin =
Integer.parseInt(jTextField_begin.getText());
int end = Integer.parseInt(jTextField_end.getText()); int num = Integer.parseInt(jTextField_num.getText());
//产生随机数
for(int i=0;i int temp = (int) (Math.random() * (end-begin))+begin; linkedList.add(temp); } //输出到屏幕 for(int i=0;i System.out.println(\随机数---\+linkedList.get(i)); } System.out.println(\随机数个数------------------\+linkedList.size()); //存储到RandomNumber.txt文件中 File file = new File(\); try { OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file),\); BufferedWriter bufferedWriter = new BufferedWriter(write); for(int i=0;i String str = String.valueOf(linkedList.get(i)); String string = new String(str.getBytes(\),\); bufferedWriter.write(string+'\\n'); } bufferedWriter.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } //读取RandomNumber.txt文件 InputStreamReader reader; try { reader = new InputStreamReader(new FileInputStream(file),\); BufferedReader bufferedReader = new BufferedReader(reader); String line = null; try { while ((line = bufferedReader.readLine()) != null) { System.out.println(\文件---\+line); } bufferedReader.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } } catch (UnsupportedEncodingException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } catch (FileNotFoundException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } } }); 2.4.1.1 “冒泡”按钮 同样给“冒泡”按钮添加监听器,在actionPerformed(ActionEvent e)方法里创建Bubble类对象,重新创建一个新的LinkedList bubbleSort(linkedList) writerToFile(linkedList)三个方法, 其中将在bubbleSort()方法前后获取当前系统时间,最后得到排序所用时间,显示在窗体中。 //冒泡排序事件 jButton_bubble.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO 自动生成的方法存根 Bubble bubble = new Bubble(); LinkedList linkedList = bubble.readerToFile(); long begin = System.currentTimeMillis(); linkedList = bubble.bubbleSort(linkedList); long end = System.currentTimeMillis(); jLabel_time.setText(\冒泡排序所用时间:\+String.valueOf(end-begin)+\); bubble.writerToFile(linkedList); } }); 2.4.2 排序函数 2.4.2.1 冒泡排序 //冒泡排序 LinkedList Integer temp; for(i=0;i for(j=1;j linkedList.set(j, linkedList.get(j-1)); linkedList.set((j-1), temp); } } } System.out.println(\排序后********\+linkedList); //排序后 return linkedList; } 2.4.2.2 直接插入排序 //直接插入排序 LinkedList Integer temp; for(i=0;i while(j>=0 && temp linkedList.set((j+1), linkedList.get(j)); j--; } linkedList.set((j+1), temp); } System.out.println(\排序后********\+linkedList); //排序后 return linkedList; } 2.4.2.2 直接选择排序 //直接选择排序 LinkedList int i,j,k; Integer temp; for(i=0;i for(j=i+1;j if(linkedList.get(j) temp = linkedList.get(i); linkedList.set(i, linkedList.get(k)); linkedList.set(k, temp); } } } System.out.println(\排序后********\+linkedList); //排序后 return linkedList; } 2.4.2.2 快速排序 //直接选择排序 LinkedList temp = linkedList.get(s); while(i!=j){ while(j>i && linkedList.get(j)>=temp) j--; linkedList.set(i, linkedList.get(j)); while(i linkedList.set(j, linkedList.get(i)); } linkedList.set(i, temp); quickSort(linkedList,s,i-1); quickSort(linkedList, i+1, t); } return linkedList; } 3.系统的测试 3.1 排序测试 先测试产生5个随机数,并依次点击“冒泡”、“直接插入”、“直接选择”、“快速”排序按钮,输出链表,结果正确。(出现0ms原因:随机数太少,CPU运行速度太快) } } e1.printStackTrace(); } catch (FileNotFoundException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } return linkedList; 6.2 Bubble类 import java.io.*; import java.util.LinkedList; public class Bubble { void writerToFile(LinkedList File file = new File(\ try { OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file),\ BufferedWriter bufferedWriter = new BufferedWriter(write); for(int i=0;i String str = String.valueOf(linkedList.get(i)); String string = new String(str.getBytes(\ bufferedWriter.write(string+'\\n'); } bufferedWriter.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } } //冒泡排序 LinkedList Integer temp; for(i=0;i for(j=1;j linkedList.set(j, linkedList.get(j-1)); linkedList.set((j-1), temp); } } } return linkedList; } LinkedList LinkedList reader = new InputStreamReader(new FileInputStream(file),\ BufferedReader bufferedReader = new BufferedReader(reader); String line = null; try { while ((line = bufferedReader.readLine()) != null) { int temp = Integer.parseInt(line); //System.out.println(\ linkedList.add(temp); } bufferedReader.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } } catch (UnsupportedEncodingException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } catch (FileNotFoundException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } } return linkedList; } 6.3 DirectInsert类 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.util.LinkedList; public class DirectInsert { void writerToFile(LinkedList File file = new File(\ try { OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file),\ BufferedWriter bufferedWriter = new BufferedWriter(write); for(int i=0;i String str = String.valueOf(linkedList.get(i)); String string = new String(str.getBytes(\ bufferedWriter.write(string+'\\n'); } bufferedWriter.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } } //直接插入排序 LinkedList int i,j; Integer temp; for(i=0;i while(j>=0 && temp linkedList.set((j+1), linkedList.get(j)); j--; } linkedList.set((j+1), temp); } return linkedList; } LinkedList LinkedList reader = new InputStreamReader(new FileInputStream(file),\ BufferedReader bufferedReader = new BufferedReader(reader); String line = null; try { while ((line = bufferedReader.readLine()) != null) { int temp = Integer.parseInt(line); //System.out.println(\ linkedList.add(temp); } bufferedReader.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } } catch (UnsupportedEncodingException e1) { // TODO 自动生成的 catch 块 } } e1.printStackTrace(); } catch (FileNotFoundException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } return linkedList; 6.4 DirectSelect类 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.util.LinkedList; public class DirectSelect { void writerToFile(LinkedList //存储到DirectSelect.txt文件中 File file = new File(\try { OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file),\ BufferedWriter BufferedWriter(write); bufferedWriter = new for(int i=0;i String str = String.valueOf(linkedList.get(i)); = new String string String(str.getBytes(\ } //直接选择排序 } bufferedWriter.close(); bufferedWriter.write(string+'\\n'); } catch (IOException e1) { } // TODO 自动生成的 catch 块 e1.printStackTrace(); LinkedList int i,j,k; Integer temp; directSelectSort(LinkedList for(i=0;i k = i; for(j=i+1;j if(linkedList.get(j) k = j; if(k!=i){ temp = linkedList.get(i); linkedList.set(i, linkedList.get(k)); linkedList.set(k, temp); } } } 排序后 } System.out.println(\直接选择排序后********\return linkedList; LinkedList LinkedList new InputStreamReader(new = new reader = FileInputStream(file),\ BufferedReader BufferedReader(reader); bufferedReader String line = null; try { while ((line = bufferedReader.readLine()) != null) { int temp = Integer.parseInt(line); //System.out.println(\ linkedList.add(temp); } bufferedReader.close(); } catch (IOException e1) { } // TODO 自动生成的 catch 块 e1.printStackTrace(); } } } catch (UnsupportedEncodingException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } catch (FileNotFoundException e1) { } return linkedList; // TODO 自动生成的 catch 块 e1.printStackTrace(); 6.5 Quick类 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.util.LinkedList; public class Quick { void writerToFile(LinkedList File file = new File(\); try { OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file),\); BufferedWriter bufferedWriter = new BufferedWriter(write); for(int i=0;i String str = String.valueOf(linkedList.get(i)); String string = new String(str.getBytes(\),\); bufferedWriter.write(string+'\\n'); } bufferedWriter.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } } //直接选择排序 LinkedList temp = linkedList.get(s); while(i!=j){ while(j>i && linkedList.get(j)>=temp) j--; linkedList.set(i, linkedList.get(j)); while(i linkedList.set(j, linkedList.get(i)); } linkedList.set(i, temp); quickSort(linkedList,s,i-1); quickSort(linkedList, i+1, t); } return linkedList; } LinkedList LinkedList reader = new InputStreamReader(new FileInputStream(file),\); BufferedReader bufferedReader = new BufferedReader(reader); } } String line = null; try { while ((line = bufferedReader.readLine()) != null) { int temp = Integer.parseInt(line); //System.out.println(\ linkedList.add(temp); } bufferedReader.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } } catch (UnsupportedEncodingException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } catch (FileNotFoundException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } return linkedList;
正在阅读:
3#拌和站施工方案(终版) - 图文11-26
宽容待人作文500字06-20
预备党员02-15
第二十章 向量自回归和误差修正模型05-17
中国两会热词 英汉翻译08-12
入党培养人考察意见02-15
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 程序设计
- 排序
- 语言
- 课程
- 报告
- 设计
- Java
- 5.12技能比赛方案
- 出纳实训习题
- 拉普拉斯变换 习题集
- 20150420水电站增效扩容改造工程完工验收工程建设管理工作报告(改)
- 六年级语文上册期中测试卷(北师大版附答案)
- 2018年中考化学真题分类汇编 - 工艺流程2含解析
- 给排水专业英语Unit13
- 最新 中国汉字听写大会(1-13期)全部词语汇总附注音解释
- 江南大学测试答案财务管理第2阶段测试题2b
- 电场能的性质
- 武汉供电公司关于印发新建住宅
- 硕士生《投资学》作业
- 大学生成就动机的现状调查与分析
- (唐)王勃《别薛华》鉴赏阅读试题答案及赏析
- MIDAS梁格法学习小结及疑问
- 2019烟台市名校中考数学模拟试题汇编(14)附答案解析
- 2004年在职攻读硕士学位全国联考英语真题及参考答案
- 泰州市委常委政法委书记高纪明在政法委机关学习贯彻市委书记在全市机关作风建设暨干部警示教育大会上的讲话
- 综合实践《筷子的学问》教学设计
- 广联达钢筋软件操作概述(新)