数据结构
文章平均质量分 86
NiNi_suanfa
拥有足够深的理解 才能产出更深刻的内容
展开
-
【数据结构/C++】位图
哈希思想的有应用,位图的概念,位图的模拟实现,布隆过滤器,布隆过滤器的模拟实现,经典面试题原创 2024-07-05 13:23:18 · 1218 阅读 · 0 评论 -
【数据结构】排序算法复杂度 及 稳定性分析 【图文详解】
前面给大家讲述了各大排序算法的原理、思路以及实现步骤、代码码源,下面让我们来对比一下各大排序之间的算法复杂度以及稳定性分析优劣,加深我们对于各排序算法的理解,帮助我们以后能更快的在具体场景下选择出最适的排序算法。原创 2023-11-05 09:46:23 · 487 阅读 · 14 评论 -
【数据结构】深入浅出讲解计数排序【图文详解,搞懂计数排序这一篇就够了】
计数排序是一种非比较排序。计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。原创 2023-11-05 00:12:31 · 521 阅读 · 8 评论 -
【数据结构】冒泡排序 (码源实现)
冒泡排序是交换排序的其中一种。基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置。交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。原创 2023-11-04 16:24:20 · 436 阅读 · 13 评论 -
【数据结构】深入浅出理解快速排序背后的原理 以及 版本优化【万字详解】(C语言实现)
快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法。# 一、Hoare版本挖坑法是Hoare排序的一个思路上的优化:不用再考虑为什么右边先走。因为一开始的坑就在左边,那么一开始就得先从右边开始找,找比坑小的数。原创 2023-11-04 14:08:13 · 378 阅读 · 11 评论 -
【数据结构】归并排序 的递归实现与非递归实现
快速排序:前序归并排序:后序。原创 2023-11-04 01:18:11 · 881 阅读 · 14 评论 -
【数据结构】希尔排序
当插排接近有序时,会非常的高效。因此希尔研究出的希尔排序,令插排前面的数据更接近有序,就更高效。效率远超预期。原创 2023-11-03 01:08:21 · 440 阅读 · 10 评论 -
【数据结构】插入排序
排序皆以升序为例进行讲解。原创 2023-11-02 22:01:01 · 340 阅读 · 11 评论 -
【数据结构】二叉树结构
在学习二叉树之前,我们已经学习了从最开始的顺序表,到后面的栈和队列,再到堆,然后就到了我们现在的二叉树我们前面学习了堆及其结构所带来的性质堆:根据其性质(我在【数据结构】二叉树的顺序结构及实现(理论学习篇)这篇博客里详细的讲述了堆的性质,大家可通过此篇来掌握),可得到 min 或 max 值 从而解决TopK问题(此问题也在前面的链接的那篇文章中有讲述)二叉树结构真正的意义是什么?原创 2023-10-29 17:16:16 · 398 阅读 · 18 评论 -
【数据结构】堆排序(C代码实现 码源)
建大堆、小堆用AdjustUP和AdjustDown其实都可以,且不管是从前往后遍历还是从后往前遍历。后续有时间的时候会补充讲解,敬请关注。原创 2023-10-26 11:54:57 · 245 阅读 · 20 评论 -
【数据结构】栈(C代码实现)
栈中的数据元素遵守**后进先出LIFO(Last In First Out)**的原则。,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。栈:一种特殊的线性表,其只允许在。:栈的插入操作叫做进栈/压栈/进行插入和删除元素操作。:栈的删除操作叫做出栈。栈的实现一般可以使用。原创 2023-10-16 21:46:54 · 942 阅读 · 25 评论 -
【数据结构】双向链表的增删查改(C 代码实现)
单链表存在的毛病:因为单链表只能单向遍历链表,对于前插这个操作,单链表必须得找到所需前插节点位置的前一个,那么这时就得从头指针重新遍历一次链表,会造成时间复杂度大大增加。没有头节点(哨兵位)无法删除首节点这些都大大提高了时间复杂度[ 关于算法的时间复杂度与空间复杂度 这一专题,我在之前写的一篇专题中有详细的讲解,有需要的可以点击链接了解一下算法的时间复杂度与空间复杂度【注意:不要下意识觉得链表就一定有哨兵位,可以有,也可以没有!正是因为单链表只能单向遍历这一特性所带来各种的麻烦,前人设计出了双向链表。原创 2023-10-12 16:20:39 · 648 阅读 · 19 评论 -
【数据结构】单链表的增删查改(C实现)
优势可通过下标i (数据连续(物理空间连续))便捷查询查找顺序表中的信息,也会在后面的排序算法和堆算法中尽显身手问题在头部/中间的插入与删除需要挪动数据,时间复杂度为O(N),效率低;增容需要申请新空间,可能会拷贝数据,释放旧空间,会有不小的消耗;增容一般是呈1.5倍或2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到 200,如果我们再继续插入了5个数据,后面没有数据插入了,那么会浪费95个数据空间;正因顺序表的这些不足,我们设计出了链表。原创 2023-10-10 15:32:41 · 564 阅读 · 19 评论 -
深入浅出理解:算法的时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度——时间复杂度的讲解原创 2023-09-28 18:57:21 · 161 阅读 · 1 评论