查找算法

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

☆樱花仙子☆ 提交于 2019-12-04 17:51:16
20182303 2019-2020-1 《数据结构与面向对象程序设计》实验7报告 课程:《程序设计与数据结构》 班级: 1823 姓名:张端云 学号:20182303 实验教师:王志强 实验日期:2019年10月30日 必修/选修: 必修 实验内容 定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。 要求:不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位。 提交运行结果图。 重构你的代码 把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中; 把测试代码放test包中,重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)。 参考 http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试,提交运行结果截图。 补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个),测试实现的算法(正常,异常,边界),提交运行结果截图。 编写Android程序对实现各种查找与排序算法进行测试,提交运行结果截图,推送代码到码云(选做)。 实验过程及结果

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

半腔热情 提交于 2019-12-04 17:44:07
20182330 2019-2020-1 《数据结构与面向对象程序设计》实验七报告 课程:《程序设计与数据结构》 班级: 1823 姓名: 魏冰妍 学号:20182330 实验教师:王志强 实验日期:2019年11月4日 必修/选修: 必修 1.实验内容 定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。 要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位。提交运行结果图。 重构你的代码。把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)。把测试代码放test包中。 重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种) 参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试提交运行结果截图 补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)。测试实现的算法(正常,异常,边界)提交运行结果截图(如果编写多个排序算法,即使其中三个排序程序有瑕疵,也可以酌情得满分) 2.

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

邮差的信 提交于 2019-12-04 17:34:26
20182320 2019-2020-1 《数据结构与面向对象程序设计》实验7报告 课程:《程序设计与数据结构》 班级: 1823 姓名: 郑力元 学号:20182320 实验教师:王志强 实验日期:2019年11月1日 必修/选修: 必修 1.实验内容 1.1 定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。 要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位 提交运行结果图。 1.2 重构你的代码 把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301) 把测试代码放test包中 重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种) 1.3 参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试 提交运行结果截图 1.4 补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个) 测试实现的算法(正常,异常,边界) 提交运行结果截图(如果编写多个排序算法

《数据结构与面向对象程序设计》实验7 报告

拈花ヽ惹草 提交于 2019-12-04 17:28:08
学号 20182329 2019-2020-1 《数据结构与面向对象程序设计》实验7 报告 课程:《程序设计与数据结构》 班级: 1823 姓名: 李一卓 学号:20182329 实验教师:王志强 实验日期:2019年10月3日 必修/选修: 必修 1.实验内容 用链定义一串字符,学会链的构成和查找 学习顺序查找、二分法查找、差值查找,被学会在链或者数组的情况下实现。 学习斐波那契数列的查找方法,也是二分查找的一种提升算法,通过运用黄金比例的概念在数列中选择查找点进行查找,提高查找效率。 学习二叉树的排序方法,并运用二叉树查找。 编写二叉树以收纳一组数据,可以运用中序遍历、前序遍历、后序遍历来进行查找。 简单学习二叉树方面的红黑数。 学习分块查找、哈希查找在链表上的实现方法。 2. 实验过程及结果 定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序)。 重构代码, 把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301) 把测试代码放test包中,用IDEA的编辑器命令行编译运算。

实验七

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-04 16:19:06
20182334 2019-2020-1 《数据结构与面向对象程序设计》实验七报告 课程:《程序设计与数据结构》 班级: 1823 姓名: 姬旭 学号: 20182334 实验教师:王志强 实验日期:2019年10月31日 必修/选修: 必修 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个) 测试实现的算法(正常,异常

JAVA数据结构

强颜欢笑 提交于 2019-12-04 13:27:46
JAVA中的常用的数据结构、每个特定类的使用和功能适用的场合。 一、数据结构 1.逻辑结构和物理结构 逻辑结构 :反映数据元素之间的逻辑关系,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。常见的逻辑结构有集合、线性结构、树形结构、图形结构。    集合 :数据结构中的元素之间除了同属一个集合”的相互关系外,别无其他关系。    线性结构 :数据结构中的元素存在一对一的相互关系。每个数据元素只有一个直接前驱和一个直接后继,线性结构有线性表,栈,队列,双队列,串,一般多维数组、广义表不是线性结构。    树形结构 :数据结构中的元素存在一对多的相互关系。且具有明显的层次关系,每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中一个元素相关。树形结构可以表示从属关系、并列关系。数据结构中各种树形状都是树形结构。    图形结构 :数据结构中的元素存在多对多的相互关系。结点之间的关系可以是任意的,任意两个数据元素之间都可能相关,图形结构常被用于描述各种复杂的数据对象。 物理结构 :指数据的逻辑结构在计算机存储空间的存放形式。包括数据元素的机内表示和关系的机内表示,数据元素的机内表示指用二进制位的位串表示数据元素,称这种位串为节点。当数据元素有若干个数据项组成时,位串中与多个数据项对应的子位串称为数据域。关系的机内表示则可以分为顺序映像和非顺序映像

排序与搜索

我的未来我决定 提交于 2019-12-04 11:25:13
排序与搜索 排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定顺序进行排列的一种算法。 排序算法的稳定性 稳定性 :稳定排序算法会让原本有相等键值的纪录维持相对次序。也就是如果一个排序算法是稳定的,当有两个相等键值的纪录R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前。 当相等的元素是无法分辨的,比如像是整数,稳定性并不是一个问题。然而,假设以下的数对将要以他们的第一个数字来排序。 (4, 1) (3, 1) (3, 7)(5, 6) 在这个状况下,有可能产生两种不同的结果,一个是让相等键值的纪录维持相对的次序,而另外一个则没有: (3, 1) (3, 7) (4, 1) (5, 6) (维持次序) (3, 7) (3, 1) (4, 1) (5, 6) (次序被改变) 不稳定排序算法可能会在相等的键值中改变纪录的相对次序,但是稳定排序算法从来不会如此。不稳定排序算法可以被特别地实现为稳定。作这件事情的一个方式是人工扩充键值的比较,如此在其他方面相同键值的两个对象间之比较,(比如上面的比较中加入第二个标准:第二个键值的大小)就会被决定使用在原先数据次序中的条目,当作一个同分决赛。然而,要记住这种次序通常牵涉到额外的空间负担。 一、冒泡排序 冒泡排序 (英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列

MySQL索引底层实现

被刻印的时光 ゝ 提交于 2019-12-04 07:10:44
  索引是数据结构   每种查找算法都只能应用于特定的数据结构之上,例如二分查找要求被检索数据有序,而二叉树查找只能应用于二叉查找树上,但是数据本身的组织结构不可能完全满足各种数据结构(例如,理论上不可能同时将两列都按顺序进行组织),所以,在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。   上图展示了一种可能的索引方式。左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找在 O ( l o g n 2 ) O(log2n)的复杂度内获取到相应数据。   虽然这是一个货真价实的索引,但是实际的数据库系统几乎没有使用二叉查找树或其进化品种红黑树(red-black tree)实现的,原因会在下文介绍。 B树   B树事实上是一种平衡的多叉查找树,也就是说最多可以开m个叉(m>=2),我们称之为m阶b树 总的来说,m阶B树满足以下条件: 每个节点至多可以拥有m棵子树。 根节点,只有至少有2个节点(要么极端情况,就是一棵树就一个根节点,单细胞生物,即是根,也是叶

常见Java数据结构&优缺点

我是研究僧i 提交于 2019-12-04 04:07:56
数组 优点:查询快,如果知道索引可以快速地存取 缺点:删除慢,大小固定 有序数组 优点:比无序数组查找快 缺点:删除和插入慢,大小固定 栈 优点:提供后进先出的存取方式 缺点:存取其他项很慢 队列 优点:提供先进先出的存取方式 缺点:存取其他项都很慢 链表 优点:插入快,删除快 缺点:查找慢(一个个节点查) 二叉树 优点:查找,插入,删除都快(平衡二叉树) 缺点:删除算法复杂 红-黑树 优点:查找,插入,删除都快,树总是平衡的(局部调整) 缺点:算法复杂 2-3-4树 优点:查找,插入,删除都快,树总是平衡的。类似的树对磁盘存储有用 缺点:算法复杂 哈希表 优点:如果关键字已知则存取速度极快,插入快 缺点:删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分 堆 优点:插入,删除快,对最大数据的项存取很快 缺点:对其他数据项存取很慢 图 优点:对现实世界建模 缺点:有些算法慢且复杂 数组 优点:查询快,如果知道索引可以快速地存取 缺点:删除慢,大小固定 有序数组 优点:比无序数组查找快 缺点:删除和插入慢,大小固定 栈 优点:提供后进先出的存取方式 缺点:存取其他项很慢 队列 优点:提供先进先出的存取方式 缺点:存取其他项都很慢 链表 优点:插入快,删除快 缺点:查找慢(一个个节点查) 二叉树 优点:查找,插入,删除都快(平衡二叉树) 缺点:删除算法复杂 红-黑树 优点:查找

插值查找

ぃ、小莉子 提交于 2019-12-04 03:44:00
概念介绍   有同学想了解插值查找,今天它来了!想了解插值查找,就得先了解二分查找的原理,对于不知道二分查找的小伙伴,可以去简单学习一下,送上超链接 https://www.cnblogs.com/maguanyue/p/11675567.html 。插值查找和二分查找十分的相似,它们唯一的区别就是:二分查找的每次查找点=(最大值+最小值)/2,是一个固定值。而插值查找的每次查找点的下标=最小值+ (最大值- 最小值) * (目标值- a[最小值下表]) / (a[最大值下表] - a[最小值下表]),这样做的目的是为了使得查找点变为自适应选择,从而提高查找的效率。   我们还是用二分查找中的数组举例子,这次我们的需求是在arr=[1,3,5,7,9,10,13,18],找到1。    二分查找:   在二分查找的算法中记录被调用打印日志,说明二分查找被调用了。   二分查找的过程在这里我们就不进行推导了,直接看二分查找的结果。   对二分查找进行调用。   结果:   说明在arr=[1,3,5,7,9,10,13,18],找到1,二分查找被调用了3次。    插值查找:   先带入公式,获取中值及其下标int mid = start + (end - start) * (findValue - arr[start]) / (arr[end] - arr[start]),int