(二十三)树结构的基础——线索化二叉树
摘要:###1.先看一个问题 将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树. n+1=7 问题分析: 当我们对上面的二叉树进行中序遍历时,数列为 {8, 3, 10, 1, 6, 14 } 但是 6, 8, 10, 14 这几个节点的 左右指针,并没有完全的利用上. 如果我们希望充
阅读全文
posted @
2021-07-14 11:50
whn051799
阅读(98)
推荐(0)
(二十二)树结构的基础——顺序存储二叉树
摘要:###1. 顺序存储二叉树的概念 基本说明 从数据存储来看,数组存储方式和树的存储方式可以相互转换,即 数组可以转换成树, 树也可以转换成数组,看右面的示意图。 要求: 右图的二叉树的结点,要求以数组的方式来存放 arr : [1, 2, 3, 4, 5, 6, 6] 要求在遍历数组 arr 时,仍
阅读全文
posted @
2021-07-14 11:35
whn051799
阅读(335)
推荐(0)
(二十一)树结构的基础——二叉树
摘要:###1.为什么需要树这种数据结构 数组存储方式的分析 优点:通过 下标方式访问元素,速度快。对于有序数组,还可使用 二分查找提高检索速度。 缺点:如果要检索具体某个值,或者 插入值( 按一定顺序) 会整体移动,效率较低 [示意图] 画出操作示意图: 链式存储方式的分析 优点:在一定程度上对数组存储
阅读全文
posted @
2021-07-14 11:27
whn051799
阅读(119)
推荐(0)
(二十)哈希表
摘要:###1.哈希表(散列)-Google 上机题 看一个实际需求,google 公司的一个上机题: 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址..),当输入该员工的id时,要求查找到该员工的 所有信息. 要求: 不使用数据库,尽量节省内存,速度越快越好=>哈希表(
阅读全文
posted @
2021-07-14 10:32
whn051799
阅读(45)
推荐(0)
(十九)查找算法——斐波那契(黄金分割法)查找
摘要:###1.斐波那契(黄金分割法)查找基本介绍: 黄金分割点是指把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比。取其前三位数字的近似值是 0.618。由于按此比例设计的造型十分美丽,因此称为黄金分割,也称为中外比。这是一个神奇的数字,会带来意向不大的效果。 斐波那契数列 {1,
阅读全文
posted @
2021-07-14 10:17
whn051799
阅读(757)
推荐(0)
(十八)查找算法——插值查找
摘要:插值查找原理介绍: 插值查找算法类似于二分查找,不同的是插值查找每次从自适应 mid 处开始查找。 将折半查找中的求 mid 索引的公式 , low 表示左边索引 left, high 表示右边索引 right.key 就是前面我们讲的 findVal int mid = low + (high -
阅读全文
posted @
2021-07-14 10:09
whn051799
阅读(206)
推荐(0)
(十七)查找算法——二分查找
摘要:###1.二分查找: 请对一个有序数组进行二分查找 {1,8, 10, 89, 1000, 1234} ,输入一个数看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数"。 ###2.二分查找算法的思路 ###3.二分查找的代码 明:增加了找到所有的满足条件的元素下标: 课后思考题: {
阅读全文
posted @
2021-07-14 10:05
whn051799
阅读(63)
推荐(0)
(十六)查找算法
摘要:###1.查找算法介绍 在 java 中,我们常用的查找有四种: 顺序(线性)查找 二分查找/折半查找 插值查找 斐波那契查找 ###2.线性查找算法 有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标
阅读全文
posted @
2021-07-14 09:59
whn051799
阅读(35)
推荐(0)
(十五)常用排序算法总结和对比
摘要:###1.一张排序算法的比较图 ###2.相关术语解释: 稳定:如果 a 原本在 b 前面,而 a=b,排序之后 a 仍然在 b 的前面; 不稳定:如果 a 原本在 b 的前面,而 a=b,排序之后 a 可能会出现在 b 的后面; 内排序:所有排序操作都在内存中完成; 外排序:由于数据太大,因此把数
阅读全文
posted @
2021-07-14 09:54
whn051799
阅读(60)
推荐(0)
(十四)排序——基数
摘要:###1.基数排序(桶排序)介绍: 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或 bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用 基数排序法是属于稳定性的排
阅读全文
posted @
2021-07-14 09:42
whn051799
阅读(92)
推荐(0)
(十三)排序——归并
摘要:###1. 归并排序介绍: 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的 分治 (divide-and-conquer )策略(分治法将问题分(divide)成一些 小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治
阅读全文
posted @
2021-07-14 09:29
whn051799
阅读(53)
推荐(0)
(十二)排序——快速
摘要:###1.快速排序法介绍: 快速排序(Quicksort)是对 冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 ##
阅读全文
posted @
2021-07-14 09:22
whn051799
阅读(64)
推荐(0)
(十一)排序——希尔
摘要:###1.简单插入排序存在的问题 我们看简单的插入排序可能存在的问题. 数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1( 最小), 这样的过程是: {2,3,4,5,6,6} {2,3,4,5,5,6} {2,3,4,4,5,6} {2,3,3,4,5,6} {2,2,3,4,5
阅读全文
posted @
2021-07-13 15:50
whn051799
阅读(46)
推荐(0)
(十)排序——插入
摘要:###1.插入排序法介绍 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 ###2.插入排序法思想 插入排序(Insertion Sorting)的基本思想是:把n 个待排序的元素看成为一个有序表和一个无序表,开始时 有序表中只包含一个元素,无序表中
阅读全文
posted @
2021-07-13 15:29
whn051799
阅读(45)
推荐(0)
(九)排序——选择
摘要:###1.基本介绍 选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。 ###2.选择排序思想: 选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从 arr[0]~arr[n-1]中选取最小值,与 arr
阅读全文
posted @
2021-07-13 15:14
whn051799
阅读(49)
推荐(0)
(八)排序——冒泡
摘要:###1.基本介绍 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始), 依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。 优化: 因为排序的过程中,各元素不断接近自己的位置, 如果一趟比较下
阅读全文
posted @
2021-07-13 15:03
whn051799
阅读(55)
推荐(0)
(七)排序算法
摘要:###1.排序算法的介绍 排序也称排序算法(SortAlgorithm),排序是将 一组数据,依 指定的顺序进行 排列的过程。 ###2.排序的分类: 内部排序: 指将需要处理的所有数据都加载到 内部存储器( 内存)中进行排序。 外部排序法: 数据量过大,无法全部加载到内存中,需要借助 外部存储(
阅读全文
posted @
2021-07-13 14:50
whn051799
阅读(83)
推荐(0)
(六)递归
摘要:###1.递归应用场景 看个实际应用场景,迷宫问题(回溯), 递归(Recursion) ###2.递归的概念 简单的说: 递归就是方法自己调用自己,每次调用时 传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 ###3.递归调用机制 我列举两个小案例,来帮助大家理解递归,部
阅读全文
posted @
2021-07-13 11:51
whn051799
阅读(61)
推荐(0)
(五)栈
摘要:###1.栈的一个实际需求 请输入一个表达式 计算式:[722-5+1-5+3-3] 点击计算【如下图】 请问: 计算机底层是如何运算得到结果的? 注意不是简单的把算式列出运算,因为我们看这个算式 7 * 2 * 2 -5, 但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串),我
阅读全文
posted @
2021-07-13 11:27
whn051799
阅读(138)
推荐(0)
(四)链表
摘要:###1.链表(Linked List)介绍 链表是有序的列表,但是它在内存中是存储如下 小结上图: 链表是以节点的方式来存储, 是链式存储 每个节点包含 data 域, next 域:指向下一个节点 如图:发现 链表的各个节点不一定是连续存储 链表分 带头节点的链表和 没有头节点的链表,根据实际的
阅读全文
posted @
2021-07-13 10:25
whn051799
阅读(73)
推荐(0)