暑期数据结构训练
文章平均质量分 78
主要介绍在学习数据结构过程中遇见的问题和算法的学习
菜菜想进步
这个作者很懒,什么都没留下…
展开
-
排序(归并排序,非比较排序)
稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的 相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,⽽在排序后的序列中,r[i]仍在r[j]之 前,则称这种排序算法是稳定的;否则称为不稳定的。数据结构结构初阶的排序基本上总结完毕了,这里我学了冒泡,插入,选择,快排,希尔,堆,归并,计数排序,这几种排序在时间复杂度,空间复杂度以及稳定性上各有各的优点。下面我们用一张图进行总结。原创 2024-08-20 17:50:28 · 1089 阅读 · 1 评论 -
选择排序(直接选择排序与堆排序的比较)
1. 直接选择排序思考⾮常好理解,但是效率不是很好。实际中很少使用,思路是先进行遍历找到元最小的元素,然后与第一个进行交换 2. 时间复杂度:O()3. 空间复杂度:O(1)上述代码的时间复杂度为:O(),但是不是最完美的所以我们进行优化一下,但是优化后时间复杂度还是O()。 这时就可以看出选择排序和冒泡排序的差别,冒泡排序优化后时间复杂度会进行改变但是选择排序就并不会改变。堆排序分为大根堆和小根堆两种方法,这两种方法主要区别的是升序还是降序。升序大根堆因为我们知道大根堆中最大位于堆顶的,经过原创 2024-08-18 19:08:35 · 960 阅读 · 1 评论 -
快排补充(挖坑法,lomuto前后指针,非递归法)
以上就是咱们本次的内容,本次内容对快排进行了补充,从而更好的理解了非递归的方法。原创 2024-08-19 16:59:19 · 639 阅读 · 1 评论 -
二叉树的经典例题(干货满满附源码)
上述例题均是利用了递归进行二叉树问题的解决,虽然思路不是很难但是自己上手还是有一点问题,值的我们自己进行上手练习一下。原创 2024-08-16 15:37:16 · 334 阅读 · 0 评论 -
插入排序(直接排序和希尔排序的比较)
我们学过较多的排序,排序分为:插入排序,选择排序,交换排序,归并排序这几种,这些排序在时间复杂度和空间复杂度上存在着一些差异,下面我们会对插入排序进行详细的讲解。排序的分类插入排序和希尔排序在时间复杂度和便利性方面都有一定的差异。插入排序适用于小规模数据或者已经基本有序的数据,而希尔排序适用于中等规模数据,尤其是部分有序的数据。在实际应用中,可以根据具体的需求和数据特点选择合适的排序算法。原创 2024-08-17 18:44:24 · 1131 阅读 · 1 评论 -
二叉树的实现用链表(符原码)
链式二叉树在计算机科学中有广泛的应用,例如在搜索算法、排序算法、表达式求值、图算法等领域。链式二叉树使用递归是非常方便的,但是我们不要忘记递归一定要有限制条件,不然递归就说无限制循环了。原创 2024-08-14 16:08:08 · 417 阅读 · 0 评论 -
栈与队列知识点总结
栈适用于后进先出方式处理数据,并且允许在任何时候只能访问或修改位于其顶端项。队列适用于先进先出方式处理数据,并且允许在任何时候只能访问或修改排在其前端各项。虽然它们有不同之处,但都是非常重要且应用广泛。原创 2024-08-06 08:32:45 · 361 阅读 · 0 评论 -
栈和队列应用实例(力扣oj练习,赋oj原码)
为了更好的掌握与练习数据结构的栈与队列,下面三道经典例题,可以帮我们更好的掌握,区分栈和队列的特性及应用。补充下面代码均是不完整(原码只包括oj中方法的调用,队列和栈方法的原码,如有需要可查看栈与队列文章)。这三个案列极好的练习了前段时间所学的栈与队列知识的点,上述三个案例虽然思路不是很难,但是细节较多,需要认真的练习。原创 2024-08-11 22:20:04 · 471 阅读 · 0 评论 -
树与二叉树的介绍与应用
树是⼀种⾮线性的数据结构,它是由 n(n>=0) 个有限结点组成⼀个具有层次关系的集合。把它叫做树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,⽽叶朝下的。每棵⼦树的根结点有且只有⼀个前驱,可以有0 个或多个后继。因此,树是递归定义的(后面会体验到树递归的暴力)。子树是不相交的,相交就是图了,⼀棵N个结点的树有N-1条边。树的图像错误案例。原创 2024-07-26 09:40:38 · 800 阅读 · 1 评论 -
双向链表知识点(附源代码)
单链表适合简单的单向遍历操作,内存消耗小;而双链表适合需要双向遍历或者频繁涉及节点前驱访问的场景,但是相应地需要更多的内存空间来存储额外的指针。原创 2024-08-02 17:35:12 · 421 阅读 · 0 评论 -
单链表的应用(附代码)
以上就是单链表所实现的功能,如有不全期待各位大佬的积极指正,最后期待各位大佬能留下一个三连支持博主一下。原创 2024-07-31 16:56:27 · 497 阅读 · 0 评论 -
快慢指针的应用(题目来源力扣oj训练)
快慢指针在数据结构上的用法还是非常的灵活,并且效率还是非常的高效,这些知识还是比较重要的,后续还有会继续更新,最后期待各位大佬的指正。原创 2024-07-16 18:52:05 · 501 阅读 · 1 评论 -
动态内存管理
动态内存分配其实还是很考察对指针指向的理解,其次这个知识点对数据结构的学习有很大的影响。希望大家能重视起来,最后希望各位大佬能进行指正,共同进步。原创 2024-07-11 23:04:16 · 734 阅读 · 2 评论 -
力扣单链表例题分析
以上是所学的快慢指针,链表反转,这几种方法的掌握对我们后续知识的学习也是很有帮助的。后面我还会对快慢指针进行深一步的探索,期待大家的指正。原创 2024-07-15 16:44:29 · 451 阅读 · 3 评论 -
顺序表练习
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组来存储。那么数组和顺序表的区别主要是顺序表是对数组的封装,虽然顺序表的底层是数组,但是提供了很多现成的方法如数据的增删查改等功能。顺序表是线性表的一种,顺序表的物理结构(指的是数据在内存上的存储方式)不一定是连续的,逻辑结构一定连续。数据结构和C语言的结构体,内存的动态存储,指针的练习较为密切。数据结构的算法理解问题不大但是当上手练习时难度还是不小,所以想练好数据结构还是要多敲多练。由于代码较多所以此处不进行展示了。原创 2024-07-10 11:57:53 · 313 阅读 · 2 评论