![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
文章平均质量分 93
这里将数据结构与算法知识的基本概念和介绍全部汇集,小伙伴们想要查看数据结构和算法的基本概念的可以来这里
努力彪
但行好事,莫问前程
展开
-
哈希表(重要)
目录概念哈希冲突概念哈希冲突的避免(两种方式)第一种方式:设计精妙的哈希函数哈希函数的设计哈希函数设计原则常见的哈希函数第二种方式:负载因子调节(重点掌握)哈希冲突的解决(两种方式)闭散列方法1:线性探测线性探测的插入操作线性探测的删除操作方法2:二次探测开散列(非常重要)概念顺序结构以及二叉搜索树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),二叉搜索树中为树的高度,即O(log2N),搜索的效率取决于搜索过程中元素的比较次原创 2022-02-01 15:48:13 · 3022 阅读 · 0 评论 -
Map和Set
目录Map的使用关于Map的说明关于Map.EntryMap的使用关于Map的说明Map是一个接口类,该类没有继承自Collection,该类中存储的是<K,V>结构的键值对,并且K一定是唯一的,不 能重复。关于Map.Entry<K, V>的说明Map.Entry<K, V> 是Map内部实现的用来存放<key, value>键值对映射关系的内部类,该内部类中主要提供了<key, value>的获取,value的设置以及Key的比较原创 2022-01-23 21:32:44 · 467 阅读 · 0 评论 -
七大排序算法
目录本文目标概念排序稳定性(重要)七大基于比较的排序-总览插入排序直接插入排序--原理代码实现注意事项希尔排序(了解,基本不考)前提原理代码示例性能分析选择排序原理代码示例性能分析堆排序冒泡排序快速排序(重要,常考)概念快速排序的三个步骤选择基准的方式方式1 固定位置(书本上介绍的内容)代码示例性能分析方式2 随机选取基准(不重要)方式3 三数取中(median-of-three)(优化有序的数据)代码示例方式4归并排序概念原理讲解代码示例性能分析海量数据的排序问题排序的总结本文目标掌握七大基于比较的排原创 2022-01-06 17:24:35 · 818 阅读 · 0 评论 -
java中对象的比较(三种方式)
目录问题提出解析Comparable接口按照rank的值进行比较底层为小根堆底层为大根堆Comparator接口按照rank的值进行比较底层为小根堆底层为大根堆元素的比较对象的比较(三种方式)问题提出上节课我们讲了优先级队列,优先级队列在插入元素时有个要求:插入的元素不能是null或者元素之间必须要能够进行比较,为了简单起见,我们只是插入了Integer类型,那优先级队列中能否插入自定义类型对象呢?先来看一段代码:class Card { public int rank; // 数值原创 2021-10-30 12:52:07 · 2282 阅读 · 0 评论 -
一篇搞懂优先级队列(堆)
本文目标带领大家掌握堆的概念以及实现掌握PriorityQueue 的使用二叉树的顺序存储存储方式使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪费。这种方式的主要用法就是堆的表示。下标关系(重要)已知双亲(parent)的下标,则:左孩子(left)下标 = 2 * parent + 1右孩子(right)下标 = 2 * parent + 2已知孩子(不区分左右)(child)下标,则:双亲(parent原创 2021-10-29 16:04:38 · 282 阅读 · 0 评论 -
2w字长篇 手把手带你彻底搞懂二叉树
目录树形结构基本概念特殊概念(重要)树的表示形式(了解)树的应用二叉树(重点)二叉树的概念二叉树的基本形态两种特殊的二叉树二叉树的性质(一般用于填空和选择题)练习题二叉树的存储链式存储法二叉树的基本操作二叉树的遍历注意事项小练习二叉树的基本操作(代码实现)关于二叉树的基础面试题首先我们先来介绍下树树形结构基本概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看 起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有原创 2021-10-22 11:07:45 · 447 阅读 · 12 评论 -
一篇帮你搞定数据结构中的栈和队列
目录概念一道关于集合的小练习集合中的栈push&peek方法概念代码示例pop方法概念代码示例注意事项(EmptyStackException异常)empty方法概念代码示例isEmpty方法概念代码示例中缀表达式转后缀表达式(面试笔试常考选择题)练习题1练习题2概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进原创 2021-10-04 18:04:13 · 296 阅读 · 1 评论 -
List接口
目录List的使用List官方文档ArrayList官方文档LinkedList官方文档常用方法List(线性表)ArrayList(顺序表)add方法关于对ArrayList的思考(扩容问题,重要)情况1:对ArrayList插入元素之前情况2:对ArrayList插入元素之后总结情况3:有参构造函数的情况addAll方法LinkedList(链表)List的使用List官方文档点击此处进入官方文档ArrayList官方文档点击此处进入官方文档LinkedList官方文档点击此处进入官方文档原创 2021-09-23 14:22:30 · 596 阅读 · 8 评论 -
预备知识---java中的包装类(装包与拆包)
这里写目录标题一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-09-06 09:57:24 · 558 阅读 · 0 评论 -
预备知识---java之泛型的探索
目录知识回顾泛型(了解)三级目录知识回顾在之前的学习中,我们曾自己实现过一个顺序表,如果想要温习的同学可以直接来我这篇博客进行翻阅:附上博客链接:点击此处进入博客之前我们对于顺序表的实现也是只能插入整形,不能插入其他类型的数据,那么现在假如我们想要实现一个顺序表是可以插入任何数据的,那么该怎样进行实现呢?来看我们的代码:我们只实现两个方法来表达我们想说的意思class MyArrayList1 { //定义一个Object类型的数组,用于存储所有类型的数据. //Object类是所原创 2021-09-05 19:21:09 · 142 阅读 · 1 评论 -
java之集合框架
目录介绍Collection接口以及其衍生Map接口以及其衍生每个接口实现类代表的含义二级目录三级目录介绍Collection接口以及其衍生集合是什么?简单点来说就是封装好的数据结构来看一张图,需要大家将里面的关系理清楚:各个颜色的分类:(分三种)三者之间的关系已经箭头的指向都要梳理清楚,如下图所示:Collection是集合的意思,用于存储"单个"元素,即将单个"元素"挨个一条一条存储,有三个接口扩展了(extends)了Collection接口,分别是List接口,Queue接原创 2021-09-05 19:33:19 · 128 阅读 · 1 评论 -
链表的基本概念
目录链表的定义链表的结构单向不带头非循环链表(重点掌握,面试常考)单向带头非循环链表单向带头循环链表自己实现一个链表链表的定义链表就像每个节点串起来一样构成了一串,每个节点都是一个节点对象其中我们对于每个节点会去划分域,分为data域跟next域两种.data代表数值域,next代表引用,用于存取下一个节点的地址.链表的结构单向不带头非循环链表(重点掌握,面试常考)单向带头非循环链表单向带头循环链表自己实现一个链表...原创 2021-08-23 17:33:30 · 1049 阅读 · 5 评论 -
一篇看懂顺序表!!(刘欣大佬《码农翻身》特别提及)
1.顺序表1.1定义顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数 据的增删查改。1.2分类顺序表一般可以分为:静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟的数组存储。静态顺序表适用于确定知道需要存多少数据的场景.静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用.相比之下动态顺序表更灵活, 根据需要动态的分配空间大小.1.3自己动手实现一个顺序表下来我先将要自己实现的...原创 2021-08-02 14:36:06 · 294 阅读 · 0 评论 -
时间复杂度和空间复杂度
一.复杂度定义与分类复杂度:衡量算法效率的标准.时间效率:衡量这个算法的运行速度,也就是我们常说的时间复杂度.空间效率:衡量这个算法所需要的额外空间,也就是我们常说的的空间复杂度.二.时间复杂度1.概念 时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个 算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但 是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻...原创 2021-07-12 19:02:55 · 245 阅读 · 0 评论