20172325 2017-2018-2 《程序设计与数据结构》实验三报告

20172325 2017-2018-2 《程序设计与数据结构》实验三报告

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

班级: 1723

姓名: 邓煜坤

学号:20172325

实验教师:王志强

实验日期:2018年11月19日

必修/选修: 必修

1.实验内容

实验三-查找与排序-1

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

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

提交运行结果图。

实验三-查找与排序-2

重构你的代码

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

把测试代码放test包中

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

实验三-查找与排序-3

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

提交运行结果截图

实验三-查找与排序-4

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

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

提交运行结果截图

实验三-查找与排序-5

完成PP11.3

提交测试代码运行截图,要全屏,包含自己的学号信息

课下把代码推送到代码托管平台

  1. 实验过程及结果

    2. 实验过程及结果

  • 实验一过程:

  • 实验二过程:

  • 实验三过程:

  • 实验四过程:

  • 实验五过程:

  • 实验六过程:

    红黑树的特性:

    (1)每个结点或者是黑色,或者是红色。

    (2)根结点是黑色。

    (3)每个叶结点(NIL)是黑色。 【注意:这里叶结点,是指为空(NIL或NULL)的叶结点!】

    (4)如果一个结点是红色的,则它的子节点必须是黑色的。

    (5)从一个结点到该结点的子孙结点的所有路径上包含相同数目的黑结点。

两个类的源码比较长,我只针对其中的几个方法进行了分析

  • containsValue类:
public boolean containsValue(Object value) {
        Node<K,V>[] tab; V v;
        if ((tab = table) != null && size > 0) {
            for (int i = 0; i < tab.length; ++i) {
                for (Node<K,V> e = tab[i]; e != null; e = e.next) {
                    if ((v = e.value) == value ||
                        (value != null && value.equals(v)))
                        return true;
                }
            }
        }
        return false;
    }
  • firstEntry()和getFirstEntry()方法:
public Map.Entry<K,V> firstEntry() {
    return exportEntry(getFirstEntry());
}
final Entry<K,V> getFirstEntry() {
    Entry<K,V> p = root;
    if (p != null)
        while (p.left != null)
            p = p.left;
    return p;
}
  • remove方法
private void deleteEntry(Entry<K,V> p) {
modCount++;
    size--;

if (p.left != null && p.right != null) {
        Entry<K,V> s = successor (p);
        p.key = s.key;
        p.value = s.value;
        p = s;
    } 

// Start fixup at replacement node, if it exists.
    Entry<K,V> replacement = (p.left != null ? p.left : p.right);
    if (replacement != null) {
        // Link replacement to parent
        replacement.parent = p.parent;
        if (p.parent == null)
            root = replacement;
        else if (p == p.parent.left)
            p.parent.left  = replacement;
        else
            p.parent.right = replacement;
        p.left = p.right = p.parent = null;
        if (p.color == BLACK)
            fixAfterDeletion(replacement);
} else if (p.parent == null) {
        root = null;
} else {
        if (p.color == BLACK)
            fixAfterDeletion(p);
        if (p.parent != null) {
            if (p == p.parent.left)
                p.parent.left = null;
            else if (p == p.parent.right)
                p.parent.right = null;
            p.parent = null;
        }
    }
}
  • HashMap方法:
public HashMap(int initialCapacity, float loadFactor) {
if (initialCapacity < 0)
   throw new IllegalArgumentException("Illegal initial capacity: " + initialCapacity);
if (initialCapacity > MAXIMUM_CAPACITY)
   initialCapacity = MAXIMUM_CAPACITY;
if (loadFactor <= 0 || Float.isNaN(loadFactor))
   throw new IllegalArgumentException("Illegal load factor: " + loadFactor);
this.loadFactor = loadFactor;
threshold = initialCapacity;
init();
}
public HashMap(int initialCapacity) {
   this(initialCapacity, DEFAULT_LOAD_FACTOR);
}
public HashMap() {
   this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR);
}

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

?问题1:在实验三的时候,打印出来的过程全为0,回过去测试实验二,发现实验二也出现了错误。

?问题1解决方案:通过单步调试发现错误出在文本文件里面,第一个字符被设置为了空格,直接导致了截取字符出现了问题,提醒我以后的代码实践中要认真考虑到每一个字符的存在意义。

4.其他(感悟、思考等)

本次实验按时完成,但是却因为自己的原因将实验报告拖沓了很久,从中受到了教训也得到了成长,这大概就是课堂学习之外的提高和成长吧,希望自己能用全新的态度和勇气面对未来的挑战。

5.参考资料

Java软件结构与数据结构(第4版)?

原文地址:https://www.cnblogs.com/20172325DYK/p/10094216.html

时间: 2024-11-04 23:43:53

20172325 2017-2018-2 《程序设计与数据结构》实验三报告的相关文章

20172313 2017-2018-2 《程序设计与数据结构》实验三报告

20172313 2017-2018-2 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 余坤澎 学号:20172313 实验教师:王志强 实验日期:2018年5月10日 必修/选修: 必修 1.实验内容 编程标准能够使代码更容易阅读和理解,甚至可以保证其中的错误更少.编程标准包含:具有说明性的名字.清晰的表达式.直截了当的控制流.可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性.安装alibaba 插件,解决代码中

# 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告

学号 2017-2018-20172309 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 王志伟 学号:20172309 实验教师:王志强老师 实验日期:2018年4月18日 必修/选修: 必修 1.实验内容 实验三 敏捷开发与XP实践 (1)代码规范:安装alibaba 插件,解决代码中的规范问题. 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好

2017-2018-2 《程序设计与数据结构》实验三报告

学号 2017-2018-2 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 康皓越 学号:20172326 实验教师:王志强 实验日期:2018年5月16日 必修/选修: 必修 1.实验内容 代码规范 协同测试 重构 密码学应用 2. 实验过程及结果 代码规范 可以看到在使用代码规范之前,我的代码几乎都存在许多问题,以standardcode作为使用代码规范的例子 public class CodeStandard { public st

20172305 2017-2018-2 《程序设计与数据结构》实验三报告

20172305 2017-2018-2 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 谭鑫 学号:20172305 实验教师:王志强 实验日期:2018年5月27日 必修/选修: 必修 1.实验内容 1.代码规范 Eclipse的内容替换成IDEA并安装alibaba 插件,解决代码中的规范问题. 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用

20172311 2017-2018-2 《程序设计与数据结构》实验三报告

20172311 2017-2018-2 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 赵晓海 学号:20172311 实验教师:王志强 实验日期:2018年5月27日 必修/选修: 必修 1.实验内容 (1)代码规范 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 参考 http://www.cnblogs.com/rocedu/p/6371315.html

20172301 2017-2018-2 《程序设计与数据结构》实验三报告

20172301 2017-2018-2 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 郭恺 学号: 20172301 实验教师:王志强老师 助教:张旭升/刘伟康 实验日期:2018年5月16日 必修/选修: 必修 1.实验内容 实验1:代码规范,安装alibaba插件,解决代码中的规范问题. 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能

172322 2018-2019-1 《程序设计与数据结构》实验三报告

172322 2018-2019-1 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 张昊然 学号:20172322 实验教师:王志强 助教:张之睿/张师瑜 实验日期:2018年11月19日 必修/选修: 必修 1.实验内容 此处填写实验的具体内容: 节点一:定义一个Searching和Sorting类,并在类中实现linearSearch(教材P162 ),SelectionSort方法(P169),最后完成测试.要求不少于10个测试用例

20172303 2018-2019-1 《程序设计与数据结构》实验三报告

20172303 2018-2019-1 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 范雯琪 学号:20172303 实验教师:王志强 助教:张师瑜/张之睿 实验日期:2018年11月19日 必修/选修: 必修 实验内容 节点一 定义一个Searching和Sorting类,并在类中实现LinearSearch(教材P162),SelectionSort方法(P169),最后完成测试. 要求不少于10个测试用例,提交测试用例设计情况(正

20182309 2019-2020-1 《数据结构与面向对象程序设计》实验三报告

20182309 2019-2020-1 <数据结构与面向对象程序设计>实验三报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 董其鹏 学号: 20182309 实验教师:王志强 实验日期:2019年9月23日 必修/选修: 必修 1.实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.完成蓝墨云上 (1)-(5)实验. 2. 实验过程及结果 sout :生成 System.out.println() ps