随笔分类 - 数据结构和算法
插值查找算法
摘要:插值查找算法 插值查找原理介绍: 插值查找算法类似于二分查找,不同的是插值查找每次从自适应 mid 处开始查找。 2.将折半查找中的求 mid 索引的公式 , low 表示左边索引 left, high 表示右边索引 right. key 就是前面我们讲的 findVal int mid = l
二分查找
摘要:二分查找: 请对一个有序数组进行二分查找 {1,8, 10, 89, 1000, 1234} ,输入一个数看看该数组是否存在此数,并且求出下 标,如果没有就提示"没有这个数"。 二分查找思路 二分查找核心代码 public static int binarySearch(int[] arr, int
基数排序法
摘要:基数排序 基数排序(桶排序)介绍: 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或 bin sort,顾 名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用 基数排序法是属于稳定性的
快速排序法
摘要:介绍: 快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两 部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排 序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 示意图: 应用实例 要
顺序存储二叉树
摘要:顺序存储二叉树的概念 从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组, 看下面的示意图。 要求: 右图的二叉树的结点,要求以数组的方式来存放 arr : [1, 2, 3, 4, 5, 6, 6] 要求在遍历数组 arr 时,仍然可以以前序遍历,中序遍
二叉树查找和删除指定结点
摘要:二叉树查找指定的节点 前序查找的思路 1.先判断当前节点的no是否等于要查找的 2.如果是相等,则返回当前节点 3.如果不等,则判断当前节点的左子节点是否为空,如果不为空,则递归前序查找 4.如果左递归前序查找,找到节点,则返回,否继续判断,当前的节点的右子节点是否为空,如果不为空,则继续向右递归前
二叉树的遍历
摘要:二叉树的遍历应用实例 前序遍历,中序遍历,后序遍历步骤 前序遍历 1.先输出当前节点 2.如果当前节点的左子节点不为空,则递归前序遍历 3.如果当前节点的右子节点不为空,则递归前序遍历 中序遍历 1.如果当前节点的左子节点不为空,则递归中序遍历 2.输出当前节点 3.如果当前节点的右子节点不为空,则
树的基本概念介绍
摘要:为什么需要树这种数据结构 这是我本人在B站看韩顺平老师数据结构和算法的学习笔记,记录一下,防止忘记 1) 数组存储方式的分析 优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 [示意图] 画出操
约瑟夫问题
摘要:
这篇博客是我在B站看韩顺平老师的数据结构和算法的约瑟夫问题后的学习笔记,记录一下,防止忘记,也希望能帮到各位小伙伴。 问题引入:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数 到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那
