数据结构与算法
文章平均质量分 96
数据结构与算法!
QuiteCoder
大一在读,不断学习,希望能掌握更多的知识,不断更新博客来记录自己学过的知识,希望与各位大佬能多多交流!qq:42328809 WeChat:D623xxcod
展开
-
【数据结构与算法】:非递归实现快速排序、归并排序
🔥个人主页🔥上篇文章我们详细讲解了递归版本的快速排序,本篇我们来探究非递归实现快速排序和归并排序。原创 2024-03-18 22:28:28 · 3974 阅读 · 168 评论 -
【数据结构与算法】:选择排序与快速排序
🔥个人主页🔥欢迎来到排序的第二个部分:选择排序与快速排序!原创 2024-03-16 18:17:50 · 2330 阅读 · 158 评论 -
【数据结构与算法】:插入排序与希尔排序
排序的稳定性是指在排序过程中,具有相等键值的元素在排序前后保持相同顺序的特性。简单来说,如果排序前两个相等的元素A和B(A出现在B之前),在排序后A仍然出现在B之前,那么这种排序算法就是稳定的;反之,如果排序后A和B的顺序发生了变化,这种排序算法就是不稳定的。稳定性在某些情况下很重要,尤其是当排序的键值是复合的,即基于多个字段进行排序时。在这种情况下,保持相等元素的初始顺序可能对保持数据的某种有意义的顺序非常关键。原创 2024-03-14 21:56:41 · 2366 阅读 · 120 评论 -
数据结构与算法:链式二叉树
首先我们定义二叉树节点内容:每个节点包含两个指针,指向左子树和右子树左右子树的节点又可以细分为:根,左子树,右子树前序遍历、中序遍历和后序遍历。这些遍历方式指的是节点访问的顺序。我们以一颗树为例来展开讨论首先讨论前序遍历:在前序遍历中,我们首先访问根节点,然后是左子树,最后是右子树。对于上述树的前序遍历,遍历顺序将是:如果用N来代表空,我们可以表示出访问顺序:接下来讨论中序遍历在中序遍历中,我们首先遍历左子树,然后访问根节点,最后遍历右子树遍历顺序:访问完2的左子树,再按照顺序访问根节点2,原创 2024-03-10 15:46:54 · 1412 阅读 · 137 评论 -
数据结构与算法:堆排序和TOP-K问题
交换根节点和最后一个节点之后,新的根节点可能破坏了大堆的性质,因此需要进行调整。原创 2024-03-05 22:55:45 · 1045 阅读 · 79 评论 -
数据结构与算法:堆
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合,n=0时成为空树,当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、……、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。有一个特殊的结点,称为根结点(A),根节点没有前驱结点。n>0 时根结点是唯一的,不可能存在多个根节点每棵子树的根结点有且只有一个前驱可以有0个或多个后继注意:树形结构中,子树之间不能有交集,否则就不是树形结构这两种情况就是错误的堆是一棵完全二叉树。原创 2024-03-02 20:49:33 · 1007 阅读 · 65 评论 -
数据结构与算法:队列
队列(Queue)就像是排队买票的人群。想象一下你去电影院看电影,人们在售票窗口形成一条线(队列)等待购票。队列遵循一个很重要的原则:先来先服务(First In, First Out,简称FIFO)。这意味着最先到达并排队的人将会是第一个买到票并离开队列的人,随后到达的人则依次排在队伍的后面,等待买票。客服服务应用了一种数据结构来实现刚才提到的先进先出的排队功能,这就是队列队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。原创 2024-02-21 20:30:47 · 1100 阅读 · 48 评论 -
数据结构与算法:栈
在应用软件中,栈的应用非常普遍,比如使用浏览器上网时,会有一个后退键,点击后可以按访问顺序的逆序加载浏览过的网页很多类似的软件,比如word等文档或编辑软件都有撤销的操作,也是用栈的方式来实现的栈是一种特殊的线性数据结构,仅支持在一个位置进行添加元素(称为“入栈”或“push”操作)和移除元素(称为“出栈”或“pop”操作)的操作。这个位置就是栈顶(Top)。由于栈是后进先出(LIFO, Last In First Out)的数据结构,最后一个添加到栈中的元素将是第一个被移除。原创 2024-02-21 14:41:22 · 1065 阅读 · 26 评论 -
数据结构与算法:双向链表
单链表中,一个节点存储数据和指向下一个节点的指针,而双向链表除了上述两个内容,还包括了指向上一个节点的指针带头的双向链表,是指在双向链表的最前端添加了一个额外的节点,这个节点被称为头节点(哨兵节点),但它一般不用于存储实际的数据(或者可以说存储的数据不被使用)。头节点的主要目的是为了简化链表操作的逻辑,避免在处理链表的开始和结束位置时需要进行特殊的条件判断。在没有头节点的普通双向链表中,如果链表为空,则链表的第一个节点(head pointer)直接为NULL,原创 2024-02-16 19:15:11 · 1239 阅读 · 45 评论 -
数据结构与算法:单链表
链表是一种在计算机科学中常用的数据结构,用于存储元素的集合。它与数组相比,链表的元素不是在内存中连续存储的。链表由一系列节点组成,每个节点至少包含两个部分:一个是存储的数据,另一个是指向列表中下一个节点的指针(或引用)。通过这种方式,链表中的节点被串联起来在顺序表中,我们的数据存储在数组中,每个数据在内存中连续存储,意味着可以通过索引直接访问任何元素我们对顺序表进行数据的插入,物理空间不变,数据依次挪动。原创 2024-02-13 20:06:22 · 810 阅读 · 40 评论 -
顺序表:数据结构的建筑积木
而不用修改整个代码中的多个地方。这提高了代码的可维护性。我们展开讨论:假设您在一个较大的项目中定义了一个数据类型别名 SLDataType 来代表 int,并在多个函数和数据结构中广泛使用了这个别名。现在,我们来看看如果需要更改这个数据类型,类型别名如何简化这个过程。原创 2024-02-03 21:38:58 · 1081 阅读 · 39 评论 -
数据结构与算法:复杂度
大O符号,记作O(f(n)),表示随着输入大小n的增加,算法的运行时间或所需空间的增长率与f(n)增长率相同或者更慢。在这里,f(n)是一个数学函数,代表随着输入规模n的变化,算法的资源消耗如何变化。原创 2024-01-28 00:09:56 · 1287 阅读 · 43 评论