20162322朱娅霖

导航

 

实验三 查找与排序

0.目录

- [查找与排序-1](#1) - [查找与排序-2](#2) - [查找与排序-3](#3) - [查找与排序-4](#4)

查找与排序-1

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

实验内容

  1. 回顾 专题 查找与排序
  2. 按照要求设计测试用例(正常,异常,边界,正序,逆序)

实验结果

代码链接

SearchingTest
SortingTest

返回目录

查找与排序-2

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

实验过程

新建包,并将代码重构至包中即可

实验结果

代码链接

cn.edu.besti.cs1623.zyl22

返回目录

查找与排序-3

### 实验要求 > 参考[http://www.cnblogs.com/maybe2030/p/4715035.html](http://www.cnblogs.com/maybe2030/p/4715035.html) 在Searching中补充查找算法并测试 提交运行结果截图 ### 实验过程 在链接中,除了之前学过的**线性查找**和**二分查找**,还补充了**插值查找**、**斐波那契查找**、**树表查找**、**分块查找**和**哈希查找**。

插值查找

属于有序查找,插值排序是对二分排序的一种改进。
算法思想:基于二分查找算法,将查找点的选择改进为自适应选择,可以提高查找效率。mid=low+(key-a[low])/(a[high]-a[low])*(high-low)
时间复杂度:O(log2(log2n))

斐波那契查找

属于有序查找,斐波那契查找也是对二分排序的一种改进。
算法思想:也是二分查找的一种提升算法,通过运用黄金比例的概念在数列中选择查找点进行查找,提高查找效率。同样地,斐波那契查找也属于一种有序查找算法。
时间复杂度:O(log2n)

树表查找

二叉查找树

实验结果

代码链接

Other Search
Test

返回目录

查找与排序-4

实验要求

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

实验过程

希尔排序

希尔排序是对插入排序的一种改进。
算法思想:把一个长序列分割为K个短序列进行高效的直接插入排序,形成一种“基本有序”的顺序;再调用直接插入排序算法,对全体记录进行一个高效的排序。
时间复杂度:O(n*lgn)

堆排序

算法思想:堆排序是利用堆的性质进行排序。
时间复杂度(最坏):O(n*lgn)

桶排序

算法思想:桶排序的基本思想是将一个数据表分割成许多buckets,然后每个bucket各自排序,或用不同的排序算法,或者递归的使用bucket sort算法。也是典型的divide-and-conquer分而治之的策略。它是一个分布式的排序,介于MSD基数排序和LSD基数排序之间。
基数排序
时间复杂度:O(n*logn)

二叉树排序

二叉查找树

实验结果

代码链接

Other Sort
Test

返回目录

posted on 2017-11-12 10:44  竹蕴澜  阅读(298)  评论(0编辑  收藏  举报