数据结构
文章平均质量分 80
数据结构复习(结合程序员小灰的《漫画算法小灰的算法之旅》和王争的《数据结构与算法之美》+本人的理解)
吃再多糖也不长胖
大数据毕业的渣渣
展开
-
20 二叉查找树
20 二叉查找树原创 2022-10-28 14:19:03 · 771 阅读 · 0 评论 -
19 二叉树的存储结构
19 二叉树的存储结构原创 2022-10-24 17:42:04 · 854 阅读 · 0 评论 -
18 哈希算法的应用和一致性哈希
18 哈希算法的应用和一致性哈希原创 2022-10-20 14:27:06 · 962 阅读 · 1 评论 -
17 散列表+链表的使用场景
17 散列表+链表的使用场景原创 2022-10-18 11:27:40 · 337 阅读 · 0 评论 -
16 如何打造一个好的散列表
16 如何打造一个好的散列表原创 2022-10-17 11:24:23 · 334 阅读 · 0 评论 -
14 跳表思想
14 跳表思想原创 2022-10-13 15:45:08 · 293 阅读 · 0 评论 -
13 二分查找的经典变形问题和实现以及快速定位IP对应的省份地址
13 二分查找的经典变形问题和实现以及快速定位IP对应的省份地址原创 2022-10-12 18:57:14 · 263 阅读 · 0 评论 -
12 二分查找和二分查找和实现以及求平方根
12 二分查找和二分查找和实现以及求平方根原创 2022-10-11 16:03:41 · 680 阅读 · 0 评论 -
实现通用的、高性能排序和快排优化
选择通用的、高性能排序如何选择合适的排序算法优化快排时间复杂度是否稳定排序是否原地排序冒泡排序o(n2)是是插入排序o(n2)是是选择排序o(n2)否是快速排序o(nlogn)否是归并排序o(nlogn)是否计数排序o(n+k) k是数据范围是否桶排序o(n)是否基数排序o(n)是否如何选择合适的排序算法1.线性排序的时间复杂度比较低,但是使用场景比较特殊,所以要选通用的排序算法时候不原创 2022-01-24 14:41:51 · 217 阅读 · 0 评论 -
线性排序--桶排序、计数、基数排序
文章目录桶排序桶排序时间复杂度桶排序的使用场景计数排序今天的主题是线性排序,线性排序时间复杂度都是O(n),通常线性排序包括了桶排序、计数排序、基数排序。这些排序都是线性的,在排序的过程中不涉及元素的比较操作。线性排序对数据要求很苛刻,所以今天主要是学习这些排序算法使用的场景。例如:如何根据年龄给100万用户排序?用归并、快排这些也可以搞定,但是这两个算法时间复杂度最低也是O(nlogn),而线性排序能达到O(n)。桶排序啥是桶排序呢,其实就是设定几个有序的桶,然后把相应的数据放入桶里面,每个原创 2022-01-19 03:15:43 · 274 阅读 · 0 评论 -
快排和归并排序--快排处理第k大元素
文章目录归并排序归并排序性能分析归并排序是稳定的排序算法吗归并排序时间复杂度空间复杂度快排冒泡、插入、排序这些排序时间复杂度都是 O(n2),时间复杂度高,适合小数据规模处理。对于大数据规模排序,用归并排序和快速排序比较适合。归并排序和快速排序都使用了分而治之的思想,今天的主题就是如何在O(n)的时间复杂度查找一个无序数组中的K元素。归并排序归并排序的思想就是将数组分成前后两部分,然后再对分开的两部分再分成两部分,以此类推,分到不可再分为止,再合并一起,如此数组便可成有序了。这个先分两半、再把两原创 2022-01-15 22:02:11 · 283 阅读 · 0 评论 -
基础排序详解 --冒泡--插入--选择
基础排序详解分析排序算法排序算法的执行效率1.最好、最坏、平均时间复杂度2.时间复杂度的系数、常数、低阶3.比较次数和交换、移动次数排序算法的内存消耗排序算法的稳定性排序算法很多,最经典的、最常用的有:冒泡排序、插入排序、选择排序、归并排序、快速排序、计数排序、基数排序、桶排序等。插入排序和冒泡排序的时间复杂度都是相同,都是O(n2),但是在实际的软件开发里,我们使用最多的是插入排序而不说冒泡排序。分析排序算法排序算法的执行效率1.最好、最坏、平均时间复杂度我们在分析时间复杂度时,要给出最好情况原创 2021-12-23 02:29:39 · 1384 阅读 · 0 评论 -
三大基础排序:冒泡_插入_选择(每一步都详解)(java)
冒泡_插入_选择冒泡排序插入排序选择排序温故而知新,先复习一下这三个基础的排序法,以后再慢慢写详细的冒泡排序 public static void bubblesort(int[] arr){/遍历整个数据,每遍历一次数组,就通过从0开始比较左右两个邻居元素,最大的往后移动,直至移动到数据最后。 int n = arr.length; if (n<1) return; for (int i=0; i<n; ++i){ //从原创 2021-12-09 02:10:32 · 392 阅读 · 0 评论 -
算法练习 -- 1-13内3个不一样的数相加=13
算法练习 – 1-13内3个不一样的数相加=13public class MyTest { public static void main(String[] args) { GetNumberGroup(); } public static void GetNumberGroup(){ int n = 13; for (int i=1; i<=n; i++){ for (int j=i+1; j<=原创 2021-12-21 15:28:07 · 182 阅读 · 0 评论 -
递归的基础详解
递归递归需要满足条件一、一个问题的解可以分解为几个字问题的解二、这个大问题跟分解后的子问题,除了数据规模不一样,求解思路是完全一样三、存在递归终止条件如何编写递归代码递归是一种非常广泛的算法,也可以说是编程技巧。简单来说呢,递归就是把一个复杂的问题,去分解为很多字子问题,这些子问题逻辑都是一样的,但是数据不一样,然后子问题求出答案后,触发了归的条件,进行合并求得最后的答案。例如在电影院,在不看票和地面的情况下怎么求得自己在第几排呢。1.你先问你前面的人他在第几排就行,你在她后面+1就是你自己的排数。原创 2021-12-21 00:45:50 · 501 阅读 · 0 评论 -
队列基本构造和应用
队列基本构造和应用队列的基本概念基于java构建顺序队列基本结构循环队列阻塞队列并发队列线程池没有空闲线程,有新请求时,线程池如何处理。队列的基本概念队列是一种线性结构,一种抽象的结构,可以用数组实现或者链表实现。用数组实现的队列叫顺序队列,用链表实现的队列叫链式队列。队列的特点就是先进先出,先进队列,后面的元素想出队列必须要排队。 引出两个基本的操作,入队enquence()和出队dequence()。队列是一种很基础的结构,应用非常广泛,比如循环队列、阻塞队列、并发队列,基于java构建顺序原创 2021-12-17 01:59:41 · 451 阅读 · 1 评论 -
逻辑结构-栈
逻辑结构-栈物理结构和逻辑结构栈栈的理解栈 结构的实现动态扩容数组栈的时间复杂度分析栈的经典应用场景栈在函数调用的应用链在表达式中的应用链在括号匹配的应用栈来实现浏览器的前进、后退功能物理结构和逻辑结构物理结构就是物质层次上的结构,是在内存中实实在在存在的存储结构。逻辑结构是抽象的结构,不在现实中存在,主要是以来物理结构而存在。物理结构主要就是数组和链表逻辑结构就有顺序表、栈、队列和树、图等。栈栈是一种线性结构,特点是先进后出,,first in last out,FILO。既是先进者后出,原创 2021-12-16 03:07:17 · 2539 阅读 · 2 评论 -
链表基本理论知识与链表实现LRU缓存思路+java实现链表基本操作
链表基本理论知识与链表经典应用LRU缓存一、链表底层结构1.1 链表结构链表的分类单链表结构链表是比数组稍微复杂的数据结构,下面从底层结构和应用场景总结一下概要。一、链表底层结构1.1 链表结构官方名词:链表是一种在物理上非连续、非顺序的数据结构,由若干个节点node组成。这个比较通俗的来说,用以下两张图来对一下数组和链表的结构在内存占用空间中的展示。数组:数组是需要一块连续的内存空间组成,对内存的要求是比较高的,这会导致当数组需要的内存空间大于总内存的剩余空间或者接近(数组内存申请过大)原创 2021-12-15 02:40:12 · 394 阅读 · 0 评论 -
归并排序--稳定
归并排序--稳定归并排序是一个稳定(当有两个相同数字的时候,不会改变这两个数字的前后顺序)的排序算法。主要是通过递归将一组数组的值进行两两拆分,然后比较,然后复制到一组临时数组中,再将临时数组的值按顺序替换原来数组的值。 public static void merge(int[] arr, int start, int mid,int end){ int i = start; //左边遍历起点 int j = mid+1; //右边遍历起点 in原创 2021-12-13 15:32:11 · 1642 阅读 · 0 评论 -
02数组的学习
02数组什么是数组线性结构连续内存空间和相同数据类型数组的一个特点数组的几个操作读取元素更新元素插入元素尾部插入中间插入超范围插入(数组扩容)创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入什么是数组数组是一种线性结构,用一组连续的内存空间来储存一组相同数据类型相同的数据。线性结构我线性结构就是像一条线一样,只有前后两个方向(或者只有一个方向),线性结构除了数组还有链表、队列、栈等结构,而非线性原创 2020-11-06 01:02:39 · 145 阅读 · 1 评论 -
01复杂度分析思考
01复杂度分析为什么需要复杂度分析常用时间复杂度级别功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入为什么需要复杂度分析数据结构与算法的目标就是让计算机执行代码的时间和所用的空间尽量减少。为了达成这个目标,我们需要从时间和空间两原创 2020-10-30 02:43:35 · 166 阅读 · 0 评论