- 博客(11)
- 收藏
- 关注
原创 串与字符串匹配
字符串:由0个或者多个字符组成的连续序列。串中字符的个数称为该串的长度。在c语言中,一般用字符数组保存字符串。字串:一个字符串中,连续的一段字符,称为该串的一个子串。前缀子串:从一个字符串的第一个字符开始,到后续任意一个字符结束(结束的位置不能是最后一个字符),该范围内的字符组成一个前缀子串。后缀子串:除第一个位置外,其他任意一个位置开始,到最后一个位置结束,该范围内的字符组成的一个后缀子串。
2025-01-12 16:13:43
291
原创 查找知识总结
红黑树本质就是2-3/2-3-4树,即基于BST表达并实现的3阶/4阶B树。黑高:在一棵红黑树中,从一个节点x出发,到其下一个叶子节点的节点路径上所包含是黑色节点的个数(起点除外)性质:1.顺序性2.每个节点一定是黑色或者红色的3.根节点和叶子节点一定是黑色的4.不存在两个相连的红色节点,即红色节点的父亲和孩子一定是黑色节点5.对于每个节点来说,从该节点到其下面任意一个叶子节点的路径上的黑色节点个数是相同的。口诀:左根右,根叶黑,不红红,黑路同。
2025-01-04 17:31:28
1017
原创 排序算法总结
O(nlogn)2-路归并内部排序O(nlogn)O(n+maxx)排序算法主要有以下几类:插入排序(直接插入排序,希尔排序),交换排序(冒泡排序,快速排序),选择排序(简单选择排序,堆排序),归并排序(2-路归并),统计排序(桶排序,基数排序)
2024-12-05 19:59:12
765
原创 数据结构--图
介绍完树这种一对多的逻辑结构,下面来介绍一下多对多的结构。也就是图,即描述多对多的复杂关系。1.1图的表示图是由两个有限的集合构成的,分别为V和E,记为G = (V, E)。其中V是顶点的有限⾮空集合,E是V中顶点偶对的有限集,这些顶点偶对称之为边(弧)。V也称顶点集合,用|V|来表示顶点的数⽬。E是由V中的点组成的⽆序对构成的集合的边集,其元素称之为边,且同⼀点对在E中可以重复出现多次(如果⽐标上边的重数的话,每⼀点对只要出现⼀次就⾏了)。⽤|E|表示边数。例如:1.2图的分类标准。
2024-11-28 19:20:39
933
原创 数据结构--树
介绍完一般的二叉树,再来看看两种特殊的二叉树。二叉搜索树和平衡二叉树,二叉搜索树(BST)又称二叉排序树和二叉查找树,定义很简单:若左⼦树不空,则左⼦树上所有结点的值均⼩于它的根结点的值。若它的右⼦树不空,则右⼦树上所有结点的值均⼤于它的根结点的值。简而言之,就是经过中序遍历后序列有序(递增或递减)的二叉树。在二叉平衡树中,有一个概念:“平衡因子”,指的是某节点左子树与右子树的高度之差。每个节点的平衡因子的绝对值不超过 1的BST。
2024-10-31 18:42:57
1355
1
原创 数据结构--队列
和栈一样,队列是一种特殊的线性结构,同时对于不同类型的队列结构,有不同的限制。我们首先来看一下基本的队列是什么。跟栈一样,我们可以联想生活的情景,比如生活中排队,遵循的原则是这同时也和栈区分开来了。当然,既然是一种数据结构,那么老样子,各种队列类型都有顺序存储结构和链式存储结构。
2024-09-20 16:49:53
1172
原创 数据结构--栈
在刷算法题时和解决业务问题时,经常会使用到栈的思想,那么这个栈到底是什么东西呢?其实栈(stack)就是一种特殊的线性表的数据结构,线性表可以任意操作结构中的数据,而且栈不一样,是一种有限制的线性表,我们能操作的只有栈顶元素。好比弹夹子弹装弹以及桶装水的过程,我们只能控制最上面的元素。“先进后出”/“后进先出”。和线性表一样,也有顺序栈和链式栈两种存储。不同的是,由于栈的限制,一般的操作只有入栈与出栈。栈的基本内容并不多,just-so-so,重点在于如何应用去解决问题,要把握这种。
2024-09-13 10:49:35
439
原创 数据结构--线性表
相较于数组,线性表可以有效的利用存储空间,是一种由同一数据类型构成的有序序列的线性结构。对于线性表的实现,有利用数组连续存储空间的顺序存储方式,也有通过链表实现的存储方式。//实现一个存放int类型数据的顺序表int *data;//指针模拟数组//数组的最大容量int length;//顺序表中元素的实际个数}MyArray;
2024-09-10 13:15:06
290
原创 c语言简单回顾
下面是来自菜鸟教程的图片,非常直观。/* 实际变量的声明 */int *ip;/* 指针变量的声明 */ip = &var;/* 在指针变量中存储 var 的地址 */printf("var 变量的地址: %p\n", &var );/* 在指针变量中存储的地址 */printf("ip 变量存储的地址: %p\n", ip );/* 使用指针访问值 */printf("*ip 变量的值: %d\n", *ip );return 0;
2024-08-19 17:15:21
907
原创 算法入门1--分而治之
分而治之的思想就是将问题一分为二(我觉得其实也就是递归),再在子问题继续分,也就是递归。在这道题中,分完后就是“治”:每两个元素对比取max。不过这里我们需要考虑跨界问题,如上图左边,4-5间元素最大和为6,后续的分析都是一样的。新手入门的最大子序列和问题,就是一道典型的分治思想算法问题。这个解法也比较好理解,它的时间复杂度是O(N)
2024-08-14 10:09:35
274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅