![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 60
数据结构的基本算法
逐梦的白鹰
碎碎平安
展开
-
【数据结构】红黑树
红黑树的基本概念,性质,实现结构体设计,平衡,插入,打印等操作原创 2023-02-17 13:28:03 · 116 阅读 · 0 评论 -
【数据结构】AVL树(高度平衡的二叉搜索树)
AVL树(高度平衡的二叉搜索树)的创建,First,Next,Last,Prev,遍历,查找,删除等函数的实现原创 2022-12-23 12:45:27 · 236 阅读 · 0 评论 -
【数据结构】二叉搜索树(二叉排序树)
二叉搜索树(二叉排序树)的创建,First,Next,Last,Prev,遍历,删除等函数的实现原创 2022-12-06 15:28:31 · 302 阅读 · 0 评论 -
【数据结构】赫夫曼树与编码
赫夫曼树与赫夫曼编码的初始化与构建(c++实现)原创 2022-11-26 11:41:05 · 321 阅读 · 0 评论 -
【数据结构】二叉树
详解关于面试中关于二叉树可能问到的问题(字符串创建,前中序创建,中后序创建,递归遍历【前,中,后序】,非递归遍历【前,中,后序】,层次遍历)原创 2022-11-22 20:56:26 · 199 阅读 · 0 评论 -
【数据结构字符串匹配算法】KMP算法
字符串匹配算法(KMP算法),使用部分匹配表使匹配的时间复杂程度大大降低原创 2022-11-20 11:50:06 · 388 阅读 · 0 评论 -
【数据结构排序算法(八)】快速排序
快速排序中的 partition 函数在面试中经常会问到,以及快速排序的优化原创 2022-03-25 14:06:56 · 2507 阅读 · 0 评论 -
【数据结构排序算法(七)】堆排序
基础数据结构之八大排序算法(七)⑦堆排序时间复杂度:O(nlogn) 其中的循环与平方有关,则时间复杂度为O(nlongn)空间复杂度:O(1) 问题规模与其额外辅助变量无关稳定性:不稳定 存在跳跃交换(以顺序表作为待排序对象)1.在学习堆排序前需要先了解一些关于树的基本知识:(1)树:(2)二叉树:【每个节点最多只能分出两个节点】(3)叶子节点:【树最外层的节点】(4)完全二叉树:(5)满二叉树:【每一层的节点都满了】(6)大顶堆:【父节点的值大于孩子节点的值】原创 2022-03-23 14:38:35 · 475 阅读 · 0 评论 -
【数据结构排序算法(六)】桶排序
基础数据结构之八大排序算法(六)⑥桶排序(基数排序)时间复杂度:O(dn) 其中d为最高位的位数,桶排序的循环和其最大值的最高位的位数有关。空间复杂度:O(dn) 其中d为最高位的位数,问题规模与其额外辅助变量有关稳定性:稳定 不存在跳跃交换(以顺序表作为待排序对象)1.基本思想:将所有值按照个位的值,十位的值,百位的值…去处理,直到到最大位的位数时停止。例如最大值为12345,则每个值比较到万位结束。以数组arr[]={ 8,7,11,120,3,39,21,9,100,99 }为例:(原创 2022-03-21 13:11:00 · 1503 阅读 · 0 评论 -
【数据结构排序算法(五)】二路归并排序
基础数据结构之八大排序算法(五)⑤二路归并排序:时间复杂度:O(nlogn) 外层函数需要遍历的次数与2的指数次有关(外层的时将复杂度为O(logn)),内层函数需要完全遍历所有数据(内层的时间复杂度为O(n)),两个相乘整体的时间复杂度为O(nlogn)空间复杂度:O(nlogn) 额外的辅助变量会影响的问题的规模(内层额外辅助空间brr,外层函数所需额外辅助变量i),整体空间复杂度为O(nlogn)稳定性:不稳定 存在跳跃交换(以顺序表作为待排序对象)1.基本思想:(1).一开始将所有数据原创 2022-03-20 14:52:49 · 7142 阅读 · 0 评论 -
【数据结构排序算法(四)】选择排序
基础数据结构之八大排序算法(四)④选择排序:时间复杂度:O(n^2) 使用了循环嵌套,一个for循环嵌套一个for循环空间复杂度:O(1) 所有使用的额外辅助变量不会影响到整体问题的规模稳定性:不稳定 存在跳跃交换(以顺序表作为待排序对象)1.基本思想:若是以小到大排序,则每一趟挑选出最小的数值放到这一趟全部数据的第一位(与冒泡排序相反:冒泡排序是每一趟找出最大的放在这一趟数据的末尾),若是从大到小排则相反。以数组arr[]={12,21,2,11,10,8}为例:原创 2022-03-18 15:04:27 · 941 阅读 · 0 评论 -
【数据结构排序算法(三)】冒泡排序
基础数据结构之八大排序算法(三)③冒泡排序(沉石排序)时间复杂度:O(n^2) 存在循环嵌套(两个for循环)空间复杂度:O(1) 所有额外辅助变量不会影响整体问题的规模稳定性:稳定 不存在跳跃交换(以顺序表作为待排序对象)1.基本思想:若是从小到大排列一组数据:则从左向右两两比较,若左边数据小于右边数据则交换(每次整体交换完成后,剩余数据中的最大值会排在这些数据的最后),从大到小排序则相反。以数据arr={ 2,21,12,11,10,8,9,28,7,1 }为例:原创 2022-03-17 16:51:50 · 1279 阅读 · 0 评论 -
【数据结构排序算法(二)】希尔排序
基础数据结构之八大排序算法(二)②希尔排序(对直接插入排序的优化),最小增量排序时间复杂度:O(1.3)~ O(1.5) 通过最小增量数组对数据进行排序,每个最小增量进行一次排序(每次排序使数据更为有序,则下次时间复杂度变小)空间复杂度:O(1) 所有额外辅助变量不会影响整体问题的规模稳定性:不稳定 存在跳跃交换(以顺序表作为待排序对象)1.基本思想:以数组 { 7 6 5 9 3 18 21 8 22 10 66 77 35 91 29 } 为例。最原创 2022-03-16 13:58:33 · 3004 阅读 · 0 评论 -
【数据结构排序算法(一)】直接插入排序
基础数据结构之八大排序算法(一)① 直接插入排序时间复杂度:O(n^2) 循环中嵌套循环,一共遍历n的平方次。空间复杂度:O(1) 所有额外辅助变量不会影响整体问题的规模稳定性:稳定 没有跨越交换。(以顺序表作为待排序对象)基本思想:将一组数据分成两组,一组有序,一组无序,依次从无序数据中取一个数据放到有序数组中。*以从小到大排列一个数组为例:比较方式:第一个数据:11 我们可以直接认为它为有序,因此在我们循环中可以减少一次循环。如下图所示:运行过程:代码实现(对顺序表原创 2022-03-15 13:21:08 · 2509 阅读 · 0 评论