二叉排序树

声明:图片及内容基于https://www.bilibili.com/video/BV15f4y197v1?from=articleDetail 二叉排序树概念 二叉树的定义 类的定义 class BiSortTree{ private: BiNode *root; public: BiSortTr ... »

AOE网与关键路径

声明:图片及内容基于https://www.bilibili.com/video/BV1BZ4y1T7Yx?from=articleDetail 原理 AOE网 关键路径 数据结构 核心代码 TopologicalSort /* TopologicalSort用于实现拓扑排序 参数:result用来 ... »

十大排序算法详解

1. 十大排序算法 其中 冒泡,选择,归并,快速,希尔,堆排序属于比较排序 稳定性理解 如果相等的两个元素,在排序前后的相对位置保持不变,那么这是稳定的排序算法。 排序前:5,1,3(a),4,7,3(b) 稳定的排序:1,3(a),3(b),4,5,7 不稳定的排序:1,3(b),3(a),4,5 ... »

PriorityQueue 是线性结构吗?90%的人都搞错了!

文章首发于「陈树义」公众号及个人博客 shuyi.tech 其实这个问题的完整描述是:Java 中的 PriorityQueue 实现,其数据的逻辑结构是线性结构吗?其数据的物理结构又是什么? 估计很多人的答案是:PriorityQueue 是线性结构,因为 PriorityQueue 是优先级队列 ... »

【数据结构与算法】——链表(Linked List)

链表(Linked List)介绍 链表是有序的列表,但是它在内存中是存储如下: 链表是以节点的方式来存储的,是链式存储。 每个节点包含data域,next域:指向下一个节点。 如图:链表的各个节点不一定是连续存储的。 链表分带头节点的链表和没有头节点的链表,根据实际需求来确定。 单链表(带头结点) ... »

【数据结构与算法】——队列(Queue)

队列(Queue)的一个使用场景 银行排队的案例: 队列(Queue)介绍 队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出来。后存入的要后取出来。 ###数组模拟队列 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图,其 ... »

【数据结构与算法】——稀疏数组

稀疏数组(sparseArray) 编写的五子棋程序中,有存盘、退出和续上盘的功能。 分析问题: 因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据,所以可以用稀疏数组来对这个二维数组进行一个压缩。 稀疏数组基本介绍: 当一个数组中大部门元素为0,或者为同一个值的数组时,可以使用稀疏数组 ... »

数据结构和算法的重要性

算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算。 一般来讲,程序会使用了内存计算框架(比如Spark)和缓存技术(比如Redis等)来优化程序,再深入思考一下,这些计算框架和缓存技术,它的人核心功能是哪个部分? 拿实际工作经历来说,在Unix下开发服务器程序,功能是要支持上千万人 ... »

数据结构与算法内容介绍

数据结构与算法内容介绍 先看几个经典的算法面试题 字符串匹配问题: 有一个字符串 str1="程序员 程序员你程序 程序员你程序员你程序员你好",和一个子串 str2="程序员你程序员你" 现在要判断str1是否含有str2,如果存在,就返回第一次出现的位置,反之返回-1 要求用最快的速度来完成匹配 ... »

时间、空间复杂度

开章 在学数据结构和算法的时候,我们一直有一个疑问?数据结构和算法有什么关系 数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。 因此,我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。 学习数据结构与算法,首先要掌握一个数据结构与算法中最重要的概念——复杂 ... »

ADT基础(三)—— HashMap

ADT基础(三)—— HashMap 1 哈希表 哈希表(hash table),也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表。 在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下(后面 ... »

ALGO基础(一)—— 排序

ALGO基础(一)—— 排序 冒选插希快归堆,以下均为从小到大排 1 冒泡排序 描述: 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数; 针对所有的元素重复以上的步骤,除了最后一个; 重复步骤1~3 ... »

『数据结构与算法』二叉查找树(BST)

二叉查找树又叫二叉排序树(Binary Sort Tree),或叫二叉搜索树,简称BST。BST是一种节点值之间有次序的二叉树。其特性是: * 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值; * 若任意节点的右子树不空,则右子树上所有节点的值均大于或等于它的根节点的值; * 任... ... »

『数据结构与算法』队列

队列和[栈](https://blog.csdn.net/gozhuyinglong/article/details/110149473)一样,也是一个操作受限制的线性表。不同的是队列的插入在一端进行,我们称为队尾(rear);而删除(取出)在另一端进行,我们称为队头(front)。 队列是一个先... ... »

『数据结构与算法』栈:详解与代码实现

栈又叫堆栈,是一种运算受限制的线性表,限定只能在一端进行插入和删除操作,该端称为栈顶(Top),相对的另一端叫栈底(Bottom)。 根据栈的定义可知,最先进入栈的元素在栈底,最后进入栈的元素在栈顶。而删除元素刚好相反,即删除顺序从栈顶到栈底 对栈的操作只有两种: * 入栈(push):又叫进栈... ... »

『数据结构与算法』稀疏数组

微信搜索:码农StayUp 主页地址:https://gozhuyinglong.github.io 源码分享:https://github.com/gozhuyinglong/blog-demos 五子棋游戏的存取需求 在介绍稀疏数组前我们先来引入一个需求,下面是一个五子棋的棋盘(15 * 15) ... »

数据结构与算法之基础知识

微信搜一搜「bigsai」一直分享干货 文章已收录在 我的Github bigsai-algorithm 前言 数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更有程序=数据结构+算法这个等式存在。各个中间件开发者,架构师他们都在努力的优化中间件、项目结构以及算法提高运 ... »

递归思想的巧妙理解

逻辑是数学的少年时代,数学是逻辑的成年时代。 ——罗素 “递归” 这是在程序、算法设计中的基础和重中之重。当初理解这一点我也花费了不少时间,对于初学者来说,如何生动形象的展现着一过程,成了理解着一思想的关键。 这篇博文的来由,源于同学问我的一个问题: 我一看啊,这波,这波是明显的递归啊!! 我想着, ... »

常用排序算法

引言 常用排序算法共有十种,堆排序在前面的章节已经介绍过,本章主要介绍九种常用排序算法。排序算法分为以下几种类型: 非线性时间比较类排序 1. 交换排序:冒泡排序和快速排序 2. 插入排序:简单插入和希尔排序 3. 选择排序:简单选择和堆排序 4. 归并排序:二路归并排序和多路归并排序 线性时间非比 ... »

字符串(四):前缀树的概念及基本操作

引言 在字符检索中我们常用到一种数据结构——Trie树,它是一种树形结构,其应用相当广泛,如: 自动补全 拼写检查 打字预测 单词游戏 在看这篇文章之前,读者们可以先复习一下树形结构的知识,不然可能会有些吃力,但如果熟悉树,你将能十分轻松的阅读下去。 前缀(Trie)树的基本概念 Trie树是一个有 ... »