
数据结构和算法
文章平均质量分 88
数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作。算法是为求解一个问题需要遵循的、被清楚指定的简单指令的集合
最小的帆也能远航
不必借光而行,你我亦是星辰!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构和算法之常用 10 种算法
目录1.二分查找算法(非递归)2.分治算法2.1分治算法最佳实践-汉诺塔3.动态规划算法4.KMP 算法4.1KMP 算法最佳应用-字符串匹配问题5.贪心算法5.1贪心算法最佳应用-集合覆盖6.普里姆算法7.克鲁斯卡尔算法8.迪杰斯特拉算法9.弗洛伊德算法10.马踏棋盘算法1.二分查找算法(非递归)二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找二分查找法的运行时间为对数时间 O(㏒₂n) ,即查找..原创 2021-01-26 21:04:35 · 2770 阅读 · 0 评论 -
数据结构和算法之图
目录1.图基本介绍1.1为什么要有图1.2图的举例说明1.3 图的常用概念1.4图的表示方式2.图的快速入门案例2.1图的深度优先遍历介绍2.2图的广度优先遍历3.图的代码汇总1.图基本介绍1.1为什么要有图前面我们学了线性表和树,线性表局限于一个直接前驱和一个直接后继的关系树也只能有一个直接前驱也就是父节点,当我们需要表示多对多的关系时, 这里我们就用到了图1.2图的举例说明图是一种数据结构,其中结点可以具有零个或多个相邻元素。两...原创 2021-01-25 20:04:07 · 204 阅读 · 0 评论 -
数据结构和算法之多路查找树
目录1.二叉树与B 树2.多叉树3.B 树的基本介绍4.2-3 树5.B 树、B+树和 B*树5.1B 树的介绍5.2B+树的介绍5.3B*树的介绍1.二叉树与B 树二叉树的问题分析二叉树的操作效率较高,但是也存在问题, 请看下面的二叉树二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如 1 亿), 就存在如下问题:问题 1:在构建二叉树时,需要多次进行 i/o 操作(海量数据存在数据库或文件中),节..转载 2021-01-25 19:36:30 · 194 阅读 · 0 评论 -
数据结构和算法之树结构实际应用
1.堆排序堆排序基本介绍堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为 O(nlogn),它也是不稳定排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没有要求结点的左孩子的值和右孩子的值的大小关系。每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆大顶堆举例说明小顶堆举例说明一般升序采用大顶堆,降序采用小顶堆堆排序基本思想堆排序的基本思.原创 2021-01-25 14:53:10 · 390 阅读 · 0 评论 -
数据结构和算法之树结构的基础部分(二叉树)
目录1.二叉树2.二叉树-查找指定节点3.二叉树-删除节点4.顺序存储二叉树1.二叉树数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 [链式存储方式的分析优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可, 删除效率也很好)。缺点:在进行检索时,效率仍然较低,比如(检索某个值,...原创 2021-01-24 21:08:36 · 167 阅读 · 0 评论 -
数据结构和算法之哈希表
目录1.哈希表的基本介绍2.哈希表应用案例1.哈希表的基本介绍散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。2.哈希表应用案例有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,名字,住址..),当输入该员工的 id 时, 要求查找到该员工的 所有...原创 2021-01-24 16:41:44 · 172 阅读 · 0 评论 -
数据结构和算法之查找算法
目录1.查找算法介绍2.线性查找算法3.二分查找算法4.插值查找算法5.斐波那契(黄金分割法)查找算法1.查找算法介绍在 java 中,我们常用的查找有四种顺序(线性)查找 二分查找/折半查找 插值查找 斐波那契查找2.线性查找算法有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值。package com.newer.search;pu...原创 2021-01-24 10:49:35 · 210 阅读 · 0 评论 -
数据结构和算法之排序算法
目录1.排序算法的介绍1.1排序算法的介绍1.2排序的分类1.3算法的时间复杂度1.4时间频度1.5时间复杂度1.6平均时间复杂度和最坏时间复杂度1.7算法的空间复杂度简介2.冒泡排序3.选择排序4.插入排序5.希尔排序6.快速排序7.归并排序8.基数排序9.常用排序算法总结和对比1.排序算法的介绍1.1排序算法的介绍排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。1.2排序的原创 2021-01-23 17:05:28 · 289 阅读 · 0 评论 -
数据结构和算法之递归
目录1.递归应用场景1.1递归的概念1.2迷宫问题1.3递归-八皇后问题(回溯算法)1.递归应用场景1.1递归的概念简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁package com.newer.recursion;public class RecursionTest { public static void main(String[] args) { //通.原创 2021-01-22 17:37:40 · 155 阅读 · 0 评论 -
数据结构和算法之栈
目录1.栈1.1栈的快速入门1.2栈实现综合计算器(中缀表达式)1.3逆波兰计算器1.4中缀表达式转换为后缀表达式1.栈栈是一个先入后出(FILO-FirstIn LastOut)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反...原创 2021-01-22 11:57:10 · 227 阅读 · 0 评论 -
数据结构和算法之链表
1.链表(LinkedList)1.1链表(LinkedList)介绍链表是有序的列表,但是它在内存中是存储如下链表是以节点的方式来存储,是链式存储 每个节点包含 data域, next域:指向下一个节点. 如图:发现链表的各个节点不一定是连续存储. 链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定单链表(带头结点) 逻辑结构示意图如下2.单链表的应用实例使用带 head 头的单向链表实现 –水浒英雄排行榜管理完...原创 2021-01-22 09:34:40 · 216 阅读 · 0 评论 -
数据结构和算法之稀疏数组和队列
目录1.数据结构和算法的重要性2.数据结构和算法概述3.线性结构和非线性结构4.稀疏数组和队列4.1基本介绍5.队列5.1队列介绍5.2数组模拟队列思路5.3数组模拟环形队列1.数据结构和算法的重要性算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算 一般来讲 程序会使用了内存计算框架(比如 Spark)和缓存技术(比如 Redis 等)来优化程序,再深入的思考一下,这些计算框架和缓存技术, 它的核心功能是哪个部分呢? 拿实际工作经历..原创 2021-01-22 09:02:26 · 261 阅读 · 2 评论