![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 67
芋头同学
一个小小的程序猿
展开
-
堆排序步骤详解+源码实现
堆排序步骤,升序排序构建大顶堆,降序排序构建小顶堆二叉树以数组方式存储有以下特点 第 i 个节点的左子节点是 2*i+1 右子节点是 2*i+2 完全二叉树的最后一个 非叶子节点为 length / 2 - 1第一步: 将无序数组调整为大顶堆结构调整步骤为 从最后一个非叶子节点开始,构建大顶堆注意: 如果是最后一个非叶子节点,我们只需要调整它为大顶堆结构即可。 但是,如果是第 n-1个非叶子节点,就...原创 2021-08-12 21:33:47 · 191 阅读 · 0 评论 -
一文搞懂数据结构 之 斐波那契查找 详细分析!
斐波那契查找其实挺不容易理解的,个人感觉。其实分析完了也就那回事。黄金分割搜索(又 斐波那契搜索)是一种通过不断缩小单峰函数的最值的已知范围,从而找到最值的方法。它的名称源于这个算法保持了间距具有黄金分割特性的三个点。这个算法与斐波那契搜索和二分查找关系紧密。因为斐波那契数列符合黄金分割,所以,黄金分割搜索,是借助了斐波那契数列实现了搜索间隔。所以也可以称之为 斐波那契搜索。下面,开始对斐波那契搜索中的一些要点进行分析。 1. 分割点选取公式 ...原创 2021-08-09 22:20:20 · 868 阅读 · 1 评论 -
一文搞懂数据结构 之 基数排序
基数排序:Radix sort 是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序原理:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。基数排序结束条件: 第一个桶存满了,就...原创 2021-08-09 20:13:27 · 193 阅读 · 0 评论 -
一文搞懂数据结构之 选择排序
选择排序是从第一个元素开始一次比较后面的元素,如果后面的元素比他小,就替换假设第一轮 从 0 开始和 20 比较,0 《 20 不懂,继续向后探测,在探测过程中,我们记录下已测得的最小值(minVal)和最小值的下标(minVal_Index)没有发现比它小的,所以开始从第二个数据,minVal = 20 minVAl_index = 1 向后找, ,发现后面 2 《 20 将 minVal 置为 2 minValindex = 2,继续向后探测...原创 2021-08-06 22:50:47 · 132 阅读 · 0 评论 -
一文搞懂数据结构之 递归-八皇后问题
八皇后是一个经典的递归问题,为了加深对八皇后解题思路的理解,故写此笔记首先,了解一下八皇后问题:八皇后问题(英文:Eight queens),是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例。问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。根据八皇后问题提取八皇后摆放条件1. 任意皇后不能在同一列2.任意皇后不能在同一行3. 任意皇后不能在同一斜线画图理解..原创 2021-08-06 22:20:21 · 550 阅读 · 1 评论 -
一文搞懂数据结构之 双向链表
查看上一篇文章一文搞懂数据结构之 单向链表和单向链表比较,双向链表多了一个必要的前驱节点指针变量。双向链表的每个节点记录了他的前驱和后继节点。可以往前遍历亦可以向后遍历单项链表增、删、插 、改时需关注的地方 1. 增加时 同样使用一个变量保存最后一次加入的节点的指针,暂且将这个指针命名为last last.next = node,node.pre = last, last = nodepublic class Do...原创 2021-08-04 22:11:19 · 101 阅读 · 0 评论 -
一文搞懂数据结构之 单向链表
链表:是一种非线性存储的数据结构,相较于线性存储的数据结构,线性存储结构需要事先关注数据量的大小,而非线性结构不必。非线性链表具有增删快查询慢的特点,线性链表删除,插入慢,查询快。单向链表 单向链表的节点需要包含存储其后一个节点的指针变量,是必须的。 单项链表增、删、插 、改时需关注的地方 1. 增加时 在链表中,头节点不要直接使用。应使用头结点的拷贝变量。 可以在链表中,加入一个...原创 2021-08-04 21:50:35 · 360 阅读 · 0 评论 -
一文搞懂数据结构 之 队列和环形队列
什么是队列?队列是一种固定大小的有序列表,它的特点是先进先出。队列有四个重要参数,【头】【尾】【最大长度】【数据区】在 Java 中的声明方式: 当队列构建完成以后,队尾和队首同时指向 地址 1 ,当向队列插入数据时,队尾向后移动,直至队尾等于 maxSize时((全文:队首、队尾初始值为 0),maxSize = 5) 队列已满,我们便无法再向队列插入数据每当我们取出一个数据,队首就向后移动一个地址,直至 队首等于队尾,所有数据取完,队列为空。根据上面的分析,我们可...原创 2021-08-02 16:40:08 · 610 阅读 · 0 评论