20162326 齐力锋 实验三

实验报告
 课程:程序设计与数据结构
班级: 1623
 姓名: 齐力锋
学号:2016232 成绩: 2分 指导教师:娄嘉鹏 王志强

实验日期:11月6日

密级:非密级
 预习程度: 已预习
 必修/选修: 必修
 实验序号: 2326

实验一:

  • 完成教材P302 Searching.Java ,P305 Sorting.java中方法的测试
  • 不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位
  • 提交运行结果图(可多张)

实验二:

  • 重构你的代码
  • 把Sorting.java Searching.java放入 cn.edu.besti.cs1623.(姓名首字母+四位学号)  包中
  • 把测试代码放test包中
  • 重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)

实验三:

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

实验四:

  • 补充实现课上讲过的排序方法:希尔排序,堆排序,桶排序,二叉树排序等
  • 测试实现的算法(正常,异常,边界)
  • 提交运行结果截图
  • 推送相关代码到码云上

实验过程及问题解决:

一、

第一项实验主要是对Searching和Sorting的各个方法进行测试

主要考察对泛型的应用和对查找算法、排序算法的了解和应用

实验一并不是很难,只是步骤较多。

需要测试边界情况——数组的0下标位置和最后一个元素

异常情况——数组中没有的元素

正序和逆序

依次将各个方法使用Junit测试,测试成功即可

package test;

import cn.edu.besti.cs1623qi26.Searching;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.framework.TestCase; 

/**
* cn.edu.besti.cs1623qi26.Searching Tester.
*
* @author <Authors name>
* @since <pre>11/06/2017</pre>
* @version 1.0
*/
public class SearchingTest extends TestCase {
public SearchingTest(String name) {
super(name);
} 

public void setUp() throws Exception {
super.setUp();
} 

public void tearDown() throws Exception {
super.tearDown();
} 

/**
*
* Method: linearSearch(Comparable[] data, Comparable target)
*
*/
public void testLinearSearch() throws Exception {
//TODO: Test goes here...

    Comparable Test[] = {2,0,1,6,2,3,2,6};

    assertEquals( 2, Searching.linearSearch(Test,2));

    assertEquals( 0, Searching.linearSearch(Test,0));

    assertEquals( 1, Searching.linearSearch(Test,1));
    assertEquals( 6, Searching.linearSearch(Test,6));
    assertEquals( 3, Searching.linearSearch(Test,3));
    assertEquals( 2, Searching.linearSearch(Test,2));
    assertEquals( null, Searching.linearSearch(Test,4));//yic异常 无该值

    Comparable Test1[] = {"齐","力","锋"};
    assertEquals("齐", Searching.linearSearch(Test1,"齐"));
    assertEquals("力", Searching.linearSearch(Test1,"力"));
    assertEquals("锋", Searching.linearSearch(Test1,"锋"));
}

/**
*
* Method: binarySearch(Comparable[] data, Comparable target)
*
*/
public void testBinarySearch() throws Exception {
//TODO: Test goes here...
  Comparable Test[] = {2,0,1,6,2,3,2,6};

    assertEquals(null, Searching.binarySearch(Test,2));//异常情况 二分查找的查找池无序
    Comparable testNormal [] = {1,2,3,5,7,9,16,18};
    assertEquals( 3, Searching.binarySearch(testNormal,3)); //正常情况 正序
    assertEquals( 5, Searching.binarySearch(testNormal,5)); //正常情况 正序
    assertEquals( 7, Searching.binarySearch(testNormal,7)); //正常情况 正序
    assertEquals( 9, Searching.binarySearch(testNormal,9)); //正常情况 正序
    assertEquals( 16, Searching.binarySearch(testNormal,16)); //正常情况 正序
    assertEquals( 18, Searching.binarySearch(testNormal,18)); //正常情况 正序

    assertEquals(null, Searching.binarySearch(testNormal,4));//异常情况 无该值

    Comparable testReverse [] = {18,16,9,7,5,3,2,1};
    assertEquals( 3, Searching.binarySearch(testNormal,3)); //正常情况 逆序
    assertEquals( 5, Searching.binarySearch(testNormal,5)); //正常情况 逆序
    assertEquals( 7, Searching.binarySearch(testNormal,7)); //正常情况 逆序
    assertEquals( 9, Searching.binarySearch(testNormal,9)); //正常情况 逆序
    assertEquals( 16, Searching.binarySearch(testNormal,16)); //正常情况 逆序
    assertEquals( 18, Searching.binarySearch(testNormal,18));//正常情况 逆序

} 

public static Test suite() {
return new TestSuite(SearchingTest.class);
}
} 
package test;

import cn.edu.besti.cs1623qi26.Sorting;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.framework.TestCase; 

/**
* cn.edu.besti.cs1623qi26.Sorting Tester.
*
* @author <Authors name>
* @since <pre>11/06/2017</pre>
* @version 1.0
*/
public class SortingTest extends TestCase {
public SortingTest(String name) {
super(name);
} 

public void setUp() throws Exception {
super.setUp();
} 

public void tearDown() throws Exception {
super.tearDown();
} 

/**
*
* Method: selectionSort(Comparable[] data)
*
*/
public void testSelectionSort() throws Exception {
//TODO: Test goes here...
    Comparable testNormal [] = {1,3,6,5,7,9,20,18};
    Sorting.selectionSort(testNormal);
    System.out.println("选择排序测试");
    for (Comparable i : testNormal)
        System.out.print(i + " ");

} 

/**
*
* Method: insertionSort(Comparable[] data)
*
*/
public void testInsertionSort() throws Exception {
//TODO: Test goes here...
    Comparable testNormal [] = {1,3,6,5,7,9,20,18};
    Sorting.insertionSort(testNormal);
    System.out.println("插入排序测试");
    for (Comparable i : testNormal)
        System.out.print(i + " ");
} 

/**
*
* Method: bubbleSort(Comparable[] data)
*
*/
public void testBubbleSort() throws Exception {
//TODO: Test goes here...
    Comparable testNormal [] = {1,3,6,5,7,9,20,18};
    Sorting.bubbleSort(testNormal);
    System.out.println("冒泡排序测试");
    for (Comparable i : testNormal)
        System.out.print(i + " ");
} 

/**
*
* Method: quickSort(Comparable[] data, int min, int max)
*
*/
public void testQuickSort() throws Exception {
//TODO: Test goes here...
    Comparable testNormal [] = {1,3,6,5,7,9,20,18};
    Sorting.quickSort(testNormal,0,7);
    System.out.println("快速排序测试");
    for (Comparable i : testNormal)
        System.out.print(i + " ");
} 

/**
*
* Method: mergeSort(Comparable[] data, int min, int max)
*
*/
public void testMergeSort() throws Exception {
//TODO: Test goes here...
    Comparable testNormal [] = {1,3,6,5,7,9,20,18};
    Sorting.mergeSort(testNormal,0,7);
    System.out.println("归并排序测试");
    for (Comparable i : testNormal)
        System.out.print(i + " ");
} 

/**
*
* Method: merge(Comparable[] data, int first, int mid, int last)
*
*/
public void testMerge() throws Exception {
//TODO: Test goes here...
    Comparable testNormal [] = {1,3,6,5,7,9,20,18,31};
    Sorting.merge(testNormal,0,4,8);
    System.out.println("归并排序测试");
    for (Comparable i : testNormal)
        System.out.print(i + " ");

} 

/**
*
* Method: main(String args[])
*
*/
public void testMain() throws Exception {
//TODO: Test goes here...
} 

/**
*
* Method: swap(Comparable[] data, int index1, int index2)
*
*/
public void testSwap() throws Exception {
//TODO: Test goes here...
/*
try {
   Method method = cn.edu.besti.cs1623qi26.Sorting.getClass().getMethod("swap", Comparable[].class, int.class, int.class);
   method.setAccessible(true);
   method.invoke(<Object>, <Parameters>);
} catch(NoSuchMethodException e) {
} catch(IllegalAccessException e) {
} catch(InvocationTargetException e) {
}
*/
} 

/**
*
* Method: partition(Comparable[] data, int min, int max)
*
*/ 

public static Test suite() {
return new TestSuite(SortingTest.class);
}
} 

二、

把Sorting.java Searching.java放入 cn.edu.besti.cs1623qi26  包中

把测试代码放到test包中

在测试代码前需要输入一下代码:

package test;

import cn.edu.besti.cs1623qi26.Searching;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.framework.TestCase; 

在Linux下的方法第一步 工程打包成一个jar包

第二步 用import关键字导入包 变量必须是public访问权限

第三步 在linux下执行java -jar jar包名字 就可以实现一个.java文件调用另一个.java文件了

package cn.edu.besti.cs1623qi26;

//********************************************************************
//  cn.edu.besti.cs1623qi26.Searching.java       Java Foundations
//
//  Contains various search algorithms that operate on an array of
//  Comparable objects.
//********************************************************************

public class Searching
{
    //-----------------------------------------------------------------
    //  Searches the specified array of objects using a linear search
    //  algorithm. Returns null if the target is not found.
    //-----------------------------------------------------------------
    public static Comparable linearSearch (Comparable[] data,
                                           Comparable target)
    {
        Comparable result = null;
        int index = 0;

        while (result == null && index < data.length)
        {
            if (data[index].compareTo(target) == 0)
                result = data[index];
            index++;
        }

        return result;
    }

    /*-----------------------------------------------------------------
    //  Searches the specified array of objects using a binary search
    //  algorithm. Returns null if the target is not found.
    //-----------------------------------------------------------------
    */
    public static Comparable binarySearch (Comparable[] data,
                                           Comparable target)
    {
        Comparable result = null;
        int first = 0, last = data.length-1, mid;

        while (result == null && first <= last)
        {
            mid = (first + last) / 2;  // determine midpoint
            if (data[mid].compareTo(target) == 0)
                result = data[mid];
            else
            if (data[mid].compareTo(target) > 0)
                last = mid - 1;
            else
                first = mid + 1;
        }

        return result;
    }
}
package test;

import cn.edu.besti.cs1623qi26.Searching;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.framework.TestCase; 

/**
* cn.edu.besti.cs1623qi26.Searching Tester.
*
* @author <Authors name>
* @since <pre>11/06/2017</pre>
* @version 1.0
*/
public class SearchingTest extends TestCase {
public SearchingTest(String name) {
super(name);
} 

public void setUp() throws Exception {
super.setUp();
} 

public void tearDown() throws Exception {
super.tearDown();
} 

/**
*
* Method: linearSearch(Comparable[] data, Comparable target)
*
*/
public void testLinearSearch() throws Exception {
//TODO: Test goes here...

    Comparable Test[] = {2,0,1,6,2,3,2,6};

    assertEquals( 2, Searching.linearSearch(Test,2));

    assertEquals( 0, Searching.linearSearch(Test,0));

    assertEquals( 1, Searching.linearSearch(Test,1));
    assertEquals( 6, Searching.linearSearch(Test,6));
    assertEquals( 3, Searching.linearSearch(Test,3));
    assertEquals( 2, Searching.linearSearch(Test,2));
    assertEquals( null, Searching.linearSearch(Test,4));//yic异常 无该值

    Comparable Test1[] = {"齐","力","锋"};
    assertEquals("齐", Searching.linearSearch(Test1,"齐"));
    assertEquals("力", Searching.linearSearch(Test1,"力"));
    assertEquals("锋", Searching.linearSearch(Test1,"锋"));
}

/**
*
* Method: binarySearch(Comparable[] data, Comparable target)
*
*/
public void testBinarySearch() throws Exception {
//TODO: Test goes here...
  Comparable Test[] = {2,0,1,6,2,3,2,6};

    assertEquals(null, Searching.binarySearch(Test,2));//异常情况 二分查找的查找池无序
    Comparable testNormal [] = {1,2,3,5,7,9,16,18};
    assertEquals( 3, Searching.binarySearch(testNormal,3)); //正常情况 正序
    assertEquals( 5, Searching.binarySearch(testNormal,5)); //正常情况 正序
    assertEquals( 7, Searching.binarySearch(testNormal,7)); //正常情况 正序
    assertEquals( 9, Searching.binarySearch(testNormal,9)); //正常情况 正序
    assertEquals( 16, Searching.binarySearch(testNormal,16)); //正常情况 正序
    assertEquals( 18, Searching.binarySearch(testNormal,18)); //正常情况 正序

    assertEquals(null, Searching.binarySearch(testNormal,4));//异常情况 无该值

    Comparable testReverse [] = {18,16,9,7,5,3,2,1};
    assertEquals( 3, Searching.binarySearch(testNormal,3)); //正常情况 逆序
    assertEquals( 5, Searching.binarySearch(testNormal,5)); //正常情况 逆序
    assertEquals( 7, Searching.binarySearch(testNormal,7)); //正常情况 逆序
    assertEquals( 9, Searching.binarySearch(testNormal,9)); //正常情况 逆序
    assertEquals( 16, Searching.binarySearch(testNormal,16)); //正常情况 逆序
    assertEquals( 18, Searching.binarySearch(testNormal,18));//正常情况 逆序

} 

public static Test suite() {
return new TestSuite(SearchingTest.class);
}
} 

三、

时间: 2024-11-01 09:58:11

20162326 齐力锋 实验三的相关文章

20162326 齐力锋 实验四

实验报告 课程:程序设计与数据结构班级: 1623 姓名: 齐力锋学号:2016232 成绩: 2分 指导教师:娄嘉鹏 王志强 实验日期:11月20日 密级:非密级 预习程度: 已预习 必修/选修: 必修 实验序号: 2326 实验一 : 用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器 给出伪代码,产品代码,测试代码(不少于5条测试) 上方提交代码链接 附件提交测试截图 实验二 : 用

2062326 齐力锋 实验二《Java面向对象程序设计》实验报告

北京电子科技学院(BESTI) 实     验    报     告 课程:   程序设计与数据结构           班级:      1623           姓名:  齐力锋      学号: 20162326 成绩:             指导教师:   娄嘉鹏/王志强             实验日期: 2017年4月14日 实验密级:非密级         预习程度:   优良      实验时间: 2 Hours 仪器组次:          必修/选修:   必修    

2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告

北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构  班级: 1623  姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5月26日 实验密级:非密级 预习程度: 优良 实验时间: 2 Hours 仪器组次: 必修/选修: 必修 实验序号: 04 实验名称:Java面向对象程序设计Android开发 实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI

2062326 齐力锋 实验一《Java开发环境的熟悉》实验报告

北京电子科技学院(BESTI) 实     验    报     告 课程:   程序设计与数据结构           班级:      1623           姓名:  齐力锋      学号: 20162326 成绩:             指导教师:   娄嘉鹏/王志强             实验日期: 2017年3月17日 实验密级:非密级         预习程度:   优良      实验时间: 2 Hours 仪器组次:          必修/选修:   必修    

[操作系统]实验三 进程调度模拟程序

实验三进程调度模拟程序 专业:商软一班   姓名:黄冠锋 学号:201406114134 1.实验目的和要求 1.1. 实验目的 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 1.2.实验要求 1.2.1例题:设计一个有 N个进程并发执行的进程调度模拟程序. 进程调度算法:采用最高优先级优先的调度算法(即把处理机分配给优先级最高的进程)和先来先服务(若优先级相同)算法. (1).  每个进程有一个进程控制块(PCB)表示.进程控制块包含如下信息:进程名.优先级.到达时

130242014027-陈锋-实验一

实验报告 课程 软件体系结构与设计   实验名称 软件设计的网络环境  第   页 专业 软件工程     班级  1班      学号  130242014027    姓名 陈锋 实验日期:   2017 年  9 月  14 日   报告退发 (订正 . 重做) 一.实验目的 1.复习软件工程的重要概念,熟悉软件体系结构与软件设计技术的基础概念与内容. 2.通过Internet搜索与浏览,了解网络环境中主流的软件体系结构与设计技术网站,掌握通过专业网站不断丰富软件体系结构和软件设计技术最新

实验三 、进程调度模拟程序

实验三.进程调度模拟程序 专业 网络工程   姓名 方俊晖 学号 201406114309 一.        实验目的 通过本实验可以加深对有关进程控制块.进程队列的概念的进一步理解. 二.        实验内容和要求 1.进程PCB的结构体定义 2.定义结构体 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行的结果 三.        实验方法.步骤及结果测试 #include<stdio.h> #include<stdlib.h> #include<stri

实验三 进程调度模拟程序

一.实验目的 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解.     二.实验内容和要求 设计一个有 N个进程并发执行的进程调度模拟程序. 进程调度算法:采用最高优先级优先的调度算法(即把处理机分配给优先级最高的进程)和先来先服务(若优先级相同)算法.动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定规则修改优先数.例如:在进程获得一次CPU后就将其优先数减少1,并且进程等待的时间超过某一时限(2个时间片时间)时增加其优先数等. (1).  每个进

实验三&#160;进程调度模拟程序

实验三 进程调度模拟程序 专业:物联网工程   姓名:黄淼  学号:201306104145 一. 实验目的和要求 目的: 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 实验要求 设计一个有 N(N不小于5)个进程并发执行的进程调度模拟程序. 进程调度算法:“时间片轮转法”调度算法对N个进程进行调度. 二.实验内容 完成两个算法(简单时间片轮转法.多级反馈队列调度算法)的设计.编码和调试工作,完成实验报告. 1) 每个进程有一个进程控制块(PCB)表示.进程控制块包含