数据结构与算法
文章平均质量分 85
RWCC
这个作者很懒,什么都没留下…
展开
-
哈希及其原理
哈希一、unordered系列关联式容器unordered_mapunordered_set在线OJ二、哈希哈希概念一、unordered系列关联式容器在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 ,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同原创 2022-05-29 08:45:00 · 255 阅读 · 0 评论 -
红黑树介绍
红黑树一、红黑树的概念红黑树的性质红黑树节点的定义红黑树结构二、使用步骤1.引入库2.读入数据总结一、红黑树的概念红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。红黑树的性质每个结点不是红色就是黑色根节点是黑色的如果一个节点是红色的,则它的两个孩子结点是黑色的对于每个结点,从该结点到其所有后代叶结点的简单路径上,均 包含相同数原创 2022-05-28 10:30:00 · 43379 阅读 · 7 评论 -
AVL平衡二叉树
、文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimp原创 2022-05-27 11:00:00 · 123 阅读 · 0 评论 -
二叉搜索树
二叉树进阶前言二叉搜索树二叉搜索树概念二叉搜索树操作二叉搜索树的实现二叉搜索树的应用二叉搜索树的性能分析二叉树进阶OJ前言map和set特性需要先铺垫二叉搜索树,而二叉搜索树也是一种树形结构二叉搜索树的特性了解,有助于更好的理解map和set的特性二叉搜索树二叉搜索树概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树原创 2022-05-25 09:45:00 · 125 阅读 · 0 评论 -
八大排序介绍
八大排序一、排序是什么?二、常见的排序算法1.插入排序基本思想:总结一、排序是什么? 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。二、常见的排序算法1.插入排序基本思想:直接插入排序是一种简单的插入排序法,其原创 2022-02-24 20:07:36 · 817 阅读 · 1 评论 -
堆与二叉树
堆与二叉树前言一、二叉树的概念及结构1. 概念2. 特殊的二叉树3. 二叉树的性质4. 二叉树的存储结构5. 二叉树的顺序结构二、堆的概念及结构1. 堆向下调整算法2. 堆的创建3. 建堆的时间复杂度4. 堆的插入5. 堆的删除三、堆的应用1. 堆排序2. TOP-K问题3. 堆的完整代码四、二叉树链式结构的实现1. 前置说明2. 二叉树的遍历前序、中序以及后序遍历层序遍历3. 二叉树完整代码五、二叉树基础oj练习前言堆是二叉树的一种,他是经过特殊排序的二叉树,在介绍对之前,先介绍一下二叉树的基本概念。原创 2022-01-12 23:14:56 · 353 阅读 · 4 评论 -
栈和队列基本操作
栈和队列一、栈栈是什么栈的实现栈的基本操作栈类型的定义初始化栈检查栈是否为满入栈出栈获取栈顶元素检测栈是否为空测试函数完整代码Stack.hStack.cmain.c二、队列队列是什么队列的实现队列类型的定义申请一个节点初始化队列队尾入队列队头出队列获取队列头部元素获取队列队尾元素获取队列中有效元素个数检测队列是否为空销毁队列测试函数完整代码三、环形队列假溢出问题一、栈栈是什么 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈原创 2021-11-30 12:35:03 · 3654 阅读 · 17 评论 -
带头节点的双向链表
双向链表前言带头+双向+循环链表增删查改实现创建返回链表的头结点双向链表销毁双向链表打印双向链表尾插双向链表尾删双向链表头插双向链表头删双向链表查找双向链表在pos的前面进行插入双向链表删除pos位置的节点测试函数功能完整代码前言 带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了,后面我们代码实现了就知道了。带头+双向+循环链表增删查改实现创建返回链表的头结点原创 2021-11-28 22:00:17 · 1087 阅读 · 7 评论 -
单链表基本操作
单链表一、链表是什么?二、链表的分类三、单链表的实现动态申请一个节点单链表的尾插单链表的尾删单链表的头插单链表的头删单链表查找在pos之后插入节点x删除pos之后位置的元素逆序打印链表测试函数总结完整代码一、链表是什么? 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。二、链表的分类实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:1.单向和双向2.带头或不带头3. 循环或者非循环三、单链表的实现动态申请一个原创 2021-11-27 15:58:38 · 1786 阅读 · 4 评论 -
顺序表基本操作
顺序表一、顺序表是什么?二、顺序表分类1. 静态顺序表:2. 动态顺序表:三、接口实现头文件设置顺序表大小设置顺序表最大容量顺序表初始化顺序表销毁顺序表打印顺序表尾插顺序表尾删顺序表头插顺序表头删判断顺序表是否为空查找元素位置在指定位置插入顺序表删除pos位置的值测试功能代码主函数总结完整代码一、顺序表是什么? 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。二、顺序表分类顺序表一般可以分为:1. 静态顺序表:使用定长数组存储原创 2021-11-23 21:45:30 · 748 阅读 · 4 评论 -
数据结构前言
算法的复杂度前言什么是数据结构?什么是算法?一、算法效率二、时间复杂度三、空间复杂度四、常见复杂度对比前言什么是数据结构? 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。什么是算法? 算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。一、算法效率如何衡量一个算法的好坏呢?比如对于以下斐波那契数列:原创 2021-11-15 17:31:24 · 161 阅读 · 2 评论