20172329 2018-2019-2 《Java软件结构与数据结构》实验三报告

课程:《Java软件结构与数据结构》html

班级: 1723java

姓名: 王文彬linux

学号:20172329git

实验教师:王志强算法

实验日期:2018年11月19日vim

必修/选修: 必修bash

1、实验内容

1.1 第一个实验内容

要求

(1)定义一个Searching和Sorting类,并在类中实现linearSearch(教材P162 ),SelectionSort方法(P169),最后完成测试。

(2)要求很多于10个测试用例,提交测试用例设计状况(正常,异常,边界,正序,逆序),用例数据中要包含本身学号的后四位

(3)提交运行结果图。(2分)

1.2 第二个实验内容

要求

(1)重构你的代码把Sorting.java Searching.java放入 cn.edu.besti.cs1723.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1723.G2301)把测试代码放test包中

(2)从新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)(2分)

1.3 第三个实验内容

要求

(1)参考http://www.cnblogs.com/maybe2030/p/4715035.html 在Searching中补充查找算法并测试提交运行结果截图(3分)

1.4 第四个实验内容

要求

(1)补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)

(2)测试实现的算法(正常,异常,边界)提交运行结果截图(3分,若是编写多个排序算法,即便其中三个排序程序有瑕疵,也能够酌情得满分)

1.5 第五个实验内容

要求

(1)编写Android程序对各类查找与排序算法进行测试提交运行结果截图推送代码到码云(加分3,加到实验中)

2、实验过程

2.1 第一个实验过程

过程数据结构

(1)由于以前已经写好过排序和查找的算法,因此不算陌生,就进行了junit测试

结果:编辑器

2.2 第二个实验过程

过程ide

(1)第二个实验的主要任务是,首先要重构代码,而后从新编译而后进行在虚拟机和idea上进行再一次的测试运行

注:学长学姐看这里!!:由于mac电脑自己就是unix系统,是linux系统的进阶版,因此自己的bash和乌班图是同样的,又由于在新电脑中没有安装虚拟机,因此,就在电脑上的bash里直接进行了测试!!

结果:

2.3 第三个实验过程

过程

第三个实验应该是我当时花费时间比较长的一个实验了,由于里面涉及补充没有据说过的查找方法:斐波那契额查找。

(1)斐波那契查找

public static boolean fibonacciSearch(int[] table, int keyWord) {

int i = 0;

while (getFibonacci(i) - 1 == table.length) {

i++;

}

int low = 0;

int height = table.length - 1;

while (low <= height) {

int mid = low + getFibonacci(i - 1);

if (table[mid] == keyWord) {

return true;

} else if (table[mid] > keyWord) {

height = mid - 1;

i--;

} else if (table[mid] < keyWord) {

low = mid + 1;

i =i- 2;

}

}

return false;

}

public static int getFibonacci(int n) {

int res = 0;

if (n == 0) {

res = 0;

} else if (n == 1) {

res = 1;

} else {

int first = 0;

int second = 1;

for (int i = 2; i <= n; i++) {

res = first + second;

first = second;

second = res;

}

}

return res;

}

咱们在高中就接触过斐波那契这我的,由于咱们学过一种数列叫作斐波那契数列,其中就像这样的数列是斐波那契数列:1,1,2,3,5,8,13......., 第三个数字是前两个数字的和,由于这样一个数列在无穷的时候前一个数除之后面的数字会无限接近于0.618,也就是咱们的黄金分割数,一样这个算法的原理也就是基于二分进行开展的,所以咱们的这个新的算法斐波那契查找一样用的也是这个原理,依次进行二分,查找这样目标,这样能够最大限度的节省效率,速度很快。

结果:

2.4 第四个实验过程

过程

(1)第四个实验是补充上课讲过的排序算法,我一共写了堆排序,二叉树排序,希尔排序,这三种新的方法,加上当时学习的选择排序,插入排序,冒泡排序,归并排序,一种七种,其中对于三种新算法进行了编写和测试:

一、堆排序

public static String Heap(Integer[] a){

ArrayHeap q =new ArrayHeap();

String result="";

for (int i =0;i

q.addElement(a[i]);

}

for (int i =0;i

result+=q.removeMax()+" ";

}

return result;

}

二、希尔排序

public static String xiersort(Integer []arr){

for(int gap=arr.length/2;gap>0;gap/=2){

for(int i=gap;i

int j = i;

while(j-gap>=0 && arr[j]

swap(arr,j,j-gap);

j-=gap;

}

}

}

return (Arrays.toString(arr));

}

三、二叉树排序

public static String Seachtree(Integer[] a){

LinkedBinarySearchTree c =new LinkedBinarySearchTree();

for (int i =0;i

c.addElement(a[i]);

}

String result="";

for (int i =0;i

result+=c.removeMin()+" ";

}

return result;

}

由于这几个方法都比较容易简单理解而且编写过程耗费时间较少,因此在这里就不进行详细的分析了,相信你们也都可以理解其中的原理,在这里我须要提一点的是,希尔排序,这个排序不知道你们还有没有印象,就是在咱们学习排序和查找这一章节的时候,课后习题有一道让咱们编写叫作间接排序法,这样一道题,其实这两个算法有殊途同归之处,在我以前看到的一篇文章里这样讲,希尔排序是带有权重(也就是那个间隔)的直接排序,而间隔排序就是带有间隔的选择排序法,因此,在我编写此次的代码的时候,就能够找到当时写那个做业的时候的感受,虽然上次那个题目有问题,最后也不知道如何解决了,可是当咱们按照题意编写的时候,老是感受有地方有问题,因此在这里再提醒一下本身不要忘记当时的问题。

结果:

2.5 第五个实验过程

过程

此次的实验让我从新拾起了andriod的编写,其中忘记了一些,可是大都仍是能够想得起来,因此还OK

结果:

3、 实验过程当中遇到的问题和解决过程

问题1:主要是在没有了虚拟机,学习了如何在电脑自己的bash上进行命令行操做

问题1解决方案:

一、首先咱们的电脑里必须具备java的jdk,这样咱们才能够在bash里输入java时有正确回复;如图1

二、而后咱们须要找到咱们写好的java文件,不管是用vim编辑器仍是在文档中写好改成Java文件,咱们首先依旧须要将这个文件进行javac的

操做,也就是编译的操做,而后咱们就产生了class文件,而后咱们就能够继续了。如图2

三、在咱们准备运行这个class文件的时候,这个咱们须要退出到上一级文件进行运行,假如咱们进入到这个class文件所在的目录,就会跳出找不到或没法运行的错误,具体缘由应该是指定路径设定的问题。如图3

图1

图2

图3

感想

又是接近了期末,本身最近由于事情愈来愈多,打乱了本身的安排,但愿本身能够找到节奏,继续加油!

参考资料

数据结构java 图实验代码_20172329 2018-2019 《Java软件结构与数据结构》实验三报告...相关推荐

  1. 怎么运行java虚拟机_Java代码如何运行在Java虚拟机中

    我们都知道要运行Java代码就必须要有JRE,也就是Java运行时环境,JRE中包含了Java程序的必需组件,包括Java虚拟机以及Java核心类库,然而运行C++代码则不需要额外的运行时环境,只需要 ...

  2. java调用子系统代码_深入理解JAVA虚拟机-Idea远程执行本地Java代码 - Java 技术驿站-Java 技术驿站...

    今天在看深入理解JAVA虚拟机的9.3节,作者实现了一个远程执行功能.这个功能可以在远程服务器中临时执行一段程序代码,而去不依赖jdk版本,不改变原有服务端程序的部署,不依赖任何第三方库,不入侵原有的 ...

  3. java猜拳游戏代码_猜拳游戏 - java代码库 - 云代码

    [java]代码库public class Computer { String name; int score; public int showfist(){ int quan; quan=(int) ...

  4. java struts2国际化代码下载_【Java框架】java struts2框架中页面表示国际化的方法 - 思诚科技...

    在struts2框架中,前端页面表示国际化的实现更加简单.简单的应用struts2框架提供的支持国际化的表达式即可快速方便的进行页面的国际化的实现.如何做呢?本文以英文和中文为例进行说明. 1,自定义 ...

  5. java界面设计 代码_Android开发——纯JAVA代码方式界面设计

    之前我们写Android页面都是在XML文件里写的,今天我们换个口味,在JAVA文件里写我们的Android页面.至于为什么要用java来写,不直接在XML文件里写,这个问题的答案很简单,因为麻烦嘛, ...

  6. java冒泡排序经典代码_15道经典Java算法题(含代码) 建议收藏

    [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?//这是一个菲波拉契数列问题 publi ...

  7. java语言生日蛋糕代码_AcWing 168. 【Java】生日蛋糕

    // 1. dfs 顺序: 枚举可能的 r,h 拼成一层蛋糕 (顺序是层内操作) // 2. dfs 状态: preR, preH, 当前层,累计体积,累计面经 (状态是分支和给下次的依赖值) // ...

  8. java点歌系统代码_ktv 一个用java写的ktv点歌系统,用ACCESS数据库 Develop 238万源代码下载- www.pudn.com...

    文件名称: ktv下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 25661 KB 上传时间: 2014-04-10 下载次数: 1 提 供 者: 成俊杰 详细说 ...

  9. java员工管理系统代码_员工管理系统JAVA源码(源码大小8M)

    员工管理系统JAVA源码(源码大小8M) 本站提供几百套大型商业源码,平均一元一套,火爆下载中...... QQ:283072.283672 EMAIL:web@hur.cn.jhwjeffrey@1 ...

最新文章

  1. jquery mobile的a标签点击无法跳转的问题
  2. 计算机图像抠图有什么作用,图像处理 抠图|傲软抠图 v1.1.13.1电脑版 - 系统天堂...
  3. 【操作系统】进程间通信
  4. [react] 在React中如何引入图片?哪种方式更好?
  5. 【转】一键将Web应用发布到云-Azure Web App!
  6. 解决:Truncated incorrect DOUBLE value: xxxX-1‘
  7. 考拉RPC(koalas-rpc v1.0)源码
  8. 【CF666E】Forensic Examination - 广义后缀自动机+线段树合并
  9. servlet无法自动在web.xml中配置
  10. ps3 安装linux,PlayStation 3上安装Ubuntu Linux[图文]
  11. Atitit 远程工作的几种办公模式 目录 1. 未来的趋势 远程办公 1 1.1. 遥远的阴影 1 1.2. 一个单中心的团队,是一个团队,每个人都被共处于同一物理位置。 2 1.3. 一个多站
  12. java求1~20阶乘之和
  13. 回归 ----一元线性回归
  14. 目标客户画像_用户画像是什么?怎么做用户画像?
  15. win7搜索网络计算机文件,Win7查找局域网共享文件的方法
  16. 探索的乐趣(物理笔记)
  17. python中fn是什么意思_Python fn
  18. 程序员需要学会宏观看待问题
  19. 读书若谈恋爱:如何阅读一本书?
  20. 卷积神经网络之 - 残差⽹络(RESNET)

热门文章

  1. jQuery框架学习第九天:jQuery工具函数介绍与使用
  2. linux下安装nginx的采坑记录
  3. 程序员的算法课(12)-使用通配符*,?等来查找字符串
  4. 用JAVA制作小游戏——飞机大战(三)
  5. 计算机访问 用户密码不能为空,解决空密码账户无法访问Windows XP共享文件夹
  6. mysql5.1修改登陆密码_mysql 5.1版本 修改密码,及远程登录mysql数据库
  7. 一个mysql复制中断的案例
  8. Json动态添加属性
  9. 用vue开发顶端粘滞效果的页面
  10. Spring Data JPA使用