数据结构
文章平均质量分 87
本专栏主要分享有关数据结构的知识,使用的语言为C/C++。
你帅你先说.
博客目前有 C语言 C++ 经典编程题 智力题 C语言项目 数据结构 六个专栏 有需要的可以进入相应专栏进行阅读。
展开
-
数据结构进阶---哈希
顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O( log_2Nlog 2 N),搜索的效率取决于搜索过程中元素的比较次数。理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。...原创 2022-07-19 22:19:34 · 352 阅读 · 5 评论 -
C++标准模板库STL---map、set容器
在之前我们已经接触过STL中的部分容器,比如:vector、list、queue等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。那什么是关联式容器?关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是结构的键值对,在数据检索时比序列式容器效率更高。原创 2022-05-27 09:24:49 · 393 阅读 · 8 评论 -
C++标准模板库STL---vector
vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。...原创 2022-03-18 22:53:39 · 1280 阅读 · 3 评论 -
C++标准模板库STL--list
1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高 效。4. 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率 更好。原创 2022-03-28 19:51:55 · 1076 阅读 · 18 评论 -
C++标准模板库STL--stack、queue、priority_queue
1.stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作。2.stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定 的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。3.stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下 操作:empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操作原创 2022-04-01 22:00:31 · 991 阅读 · 2 评论 -
C++标准模板库STL---string类
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。原创 2022-03-06 17:31:41 · 1395 阅读 · 13 评论 -
数据结构进阶--二叉搜索树
二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树。原创 2022-05-23 22:22:26 · 582 阅读 · 15 评论 -
数据结构--排序之计数排序 + 排序总结
思想:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤:1.统计相同元素出现次数2.根据统计的结果将序列回收到原来的序列中原创 2022-02-10 23:16:44 · 836 阅读 · 0 评论 -
数据结构--排序之快速排序
快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。快排每一趟都会有一个元素回到它真正的位置。原创 2022-02-08 20:19:24 · 7506 阅读 · 10 评论 -
数据结构--排序之归并排序
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。原创 2022-02-06 23:51:44 · 685 阅读 · 10 评论 -
数据结构--排序之堆排序
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。原创 2022-02-04 23:14:50 · 732 阅读 · 4 评论 -
数据结构--排序之希尔排序
希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工作。当到达=1时,所有记录在统一组内排好序。原创 2022-02-03 23:32:09 · 3209 阅读 · 12 评论 -
数据结构--排序之选择排序
选择排序即每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。原创 2022-02-02 20:19:28 · 2025 阅读 · 8 评论 -
数据结构--排序之直接插入排序
直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列原创 2022-01-29 23:35:01 · 3222 阅读 · 11 评论 -
数据结构--排序之冒泡排序
冒泡排序也称气泡排序,是一种典型的交换排序方法,其基本思想是通过无序区中相邻元素关键字间的比较和位置的交换使关键字最小的元素如气泡一般逐渐往上"漂浮"直至"水面"。原创 2022-01-27 22:25:52 · 2160 阅读 · 0 评论 -
数据结构--TopK问题
什么是topK问题?简单来讲就是从n个数中取前k个最大的数。研究topK问题有什么价值吗?这么说吧,平常到了饭点你是不是得点外卖,比如你今天要吃西餐,那你就会在外卖系统中选择西餐一类,系统就会帮你排出评分最高的几家店,这就是topK问题。原创 2022-01-16 00:05:26 · 782 阅读 · 18 评论 -
数据结构---二叉树、堆
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。●有一个特殊的结点,称为根结点,根节点没有前驱结点●除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1原创 2021-11-25 21:22:02 · 994 阅读 · 3 评论 -
数据结构--栈、队列
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。原创 2021-11-06 15:11:21 · 403 阅读 · 15 评论 -
数据结构---顺序表、链表
线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。原创 2021-10-30 15:56:58 · 753 阅读 · 18 评论 -
时间复杂度带你入门数据结构(建议收藏)❥(^_-)
算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。...原创 2021-10-15 23:07:52 · 612 阅读 · 14 评论