Java算法排序实验的实验心得_20192312吴欣欣 实验七《查找与排序》实验报告

20192312 2020-2021-1 实验七 《查找与排序》实验报告

课程:《程序设计与数据结构》

班级: 1923

姓名: 吴欣欣

学号:20192312

实验教师:王志强

实验日期:2020年11月26日

必修/选修: 必修

1.实验内容

1.定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。

要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位

提交运行结果图。

2.重构你的代码

把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)

把测试代码放test包中

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

3.参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试

提交运行结果截图

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

测试实现的算法(正常,异常,边界)

提交运行结果截图(如果编写多个排序算法,即使其中三个排序程序有瑕疵,也可以酌情得满分)

5.编写Android程序对实现各种查找与排序算法进行测试

提交运行结果截图

推送代码到码云(选做,加分)

2.实验过程及结果

1.定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。

要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位

提交运行结果图。

Searching代码

package ex7;

import com.ibm.icu.impl.UResource;

import java.util.Arrays;

import java.util.Scanner;

public class Searching {

int data[];

public Searching(int m[]){

data=m;

}

public int[] Input(){

final int CAPACITY=3;

data=new int[CAPACITY];

int i=0;

Scanner scan=new Scanner(System.in);

System.out.print("输入数组(以*作为结尾):");

while(scan.hasNextInt()){

if(i==data.length)

data= Arrays.copyOf(data,data.length+CAPACITY);

data[i]=scan.nextInt();

i++;

}

scan.next();

return data;

}

public int LinearSearch(int target){

int m[]=Arrays.copyOf(data,data.length+1);

int i,tail=m.length-1;

m[tail]=target;

for(i=0;;i++){

if(m[i]==target)return i+1;

}

}

}

08e680b6612d933f3e8607e6e2201026.png

Sorting代码

package ex7;

import java.util.Arrays;

import java.util.Scanner;

public class Sorting {

int []data;

int top;

public Sorting(int m[]){

data=m;

}

public void Input() {

final int CAPACITY = 3;

data= new int[CAPACITY];

Scanner scan = new Scanner(System.in);

int i = 0;

System.out.print("输入数组(以*作为结尾):");

while (scan.hasNextInt()) {

if (i == data.length)

data = Arrays.copyOf(data, data.length + CAPACITY);

data[i] = scan.nextInt();

i++;

}

top=i;

scan.next();

}

public void swap(int []m,int a,int b){

int temp;

temp=m[a];

m[a]=m[b];

m[b]=temp;

}

public void Print(int m[]){

for(int i=0;i

System.out.print(m[i]+" ");

}

System.out.println("");

}

public void SelectionSort(){

int i,j;

for(i=0;i

int temp=i;

for(j=i+1;j

if(data[j]

temp=j;

}

if(temp!=i) {

swap(data, temp, i);

}

}

Print(data);

}

}

bb06cc7691defccfb928cc0ef2691ebd.png

f618bb9d2b49f399c237af134f99d5c6.png

b266afedee0fbd2c414968cfebeb94ca.png

85a7a82a7cc6365aa4afd5f8b437e7c1.png

3114909895b9043bba5fe2ccda500b12.png

804dbbbc0280f0bcf12070884669dde9.png

d9f365d51d462188599c3bee7133f32d.png

2.重构你的代码

把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)

把测试代码放test包中

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

7ad29111fb9c524949570245c38b8628.png

0561335155ad81afadd603125514a393.png

07e4e1930f34ee259ec9f8a0ba8cd470.png

1d7dead63f6fdbc5bba42094124a2668.png

982e6ba88b7cd38cf707671205ac78a6.png

d7ece982230810d4b0bfe7f43bfb871b.png

3.参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试

提交运行结果截图

Node

package cn.edu.besti.cs1923.W2312;

public class Node {

int index;

public int data;//关键字段

public Node leftNode;//左节点

public Node rightNode;//右节点

public Node() {

index=-1;

this.data = -1;

leftNode = null;

rightNode = null;

}

public Node(int value,int i) {

index=i;

this.data = value;

leftNode = null;

rightNode = null;

}

public int findNode(Node root, int key) {

Node current = root;

while (current.data != key) {

if (key < current.data) {//左节点

current = current.leftNode;

} else {//右节点

current = current.rightNode;

}

if (current == null) {

return -1;

}

}

return current.index+1;

}

public Node InsertNode(int m[]) {

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值