- 博客(17)
- 收藏
- 关注
原创 数据结构(查找)
查找算法的选择需综合考虑数据特征(有序性、分布情况)和操作需求(查询频率、是否动态更新)。C语言作为贴近硬件的语言,能清晰展现算法底层逻辑,建议通过手写代码加深理解。没有最好的算法,只有最适合场景的算法。
2025-02-17 21:38:30
785
原创 数据结构(十大基础排序)
排序算法是计算机科学的基石,也是C语言初学者的必经之路。本文将深入解析十大基础排序算法的核心思想,并提供可直接运行的C语言代码实现。通过时间复杂度对比和应用场景分析,帮助读者构建完整的排序知识体系。优先选择插入排序(性能接近O(n)):通过相邻元素交换"浮起"最大值。:构建有序序列,逐个插入元素。:按位排序(LSD/MSD):每次选择最小元素放置到位。:数据分桶+各桶单独排序。:希尔、计数、桶、基数。:交换次数恒为O(n):原地排序O(1)空间。:保持相等元素原始顺序。:统计元素频次实现排序。
2025-02-16 17:09:25
926
原创 数据结构(单调栈,单调队列)
单调队列本质上是一个队列,不过队列中的元素保持单调递增或单调递减的顺序。与单调栈不同的是,单调队列可以在队首和队尾进行操作,这使得它能够处理滑动窗口这类需要动态维护区间信息的问题。
2025-02-14 22:19:48
465
原创 数据结构(图,最小生成树)
在一个无向连通带权图中,最小生成树是一棵包含图中所有顶点,且边的权值之和最小的生成树。生成树是原图的一个子图,它包含原图的所有顶点且保持图的连通性,同时是一棵树,即没有回路。
2025-02-08 21:24:01
634
原创 数据结构(二叉树的线索化,哈夫曼树,并查集)
哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树,基本定义涉及路径、路径长度、权、带权路径长度等概念路径和路径长度:在一棵树中,从一个结点到另一个结点所经过的分支序列称为这两个结点之间的路径,路径上分支的数目称为路径长度。权与带权路径长度权:树中每个结点都可以赋予一个数值,这个数值就称为该结点的权。它可以代表某种实际意义,比如出现的频率、概率等。结点的带权路径长度:从根结点到该结点的路径长度与该结点权值的乘积。树的带权路径长度(WPL):树中所有叶子结点的带权路径长度之和。哈夫曼树的定义。
2025-02-06 20:48:12
1030
原创 总结:背包问题
在解决问题之前,为描述方便,首先定义一些变量:Vi表示第 i 个物品的价值,Wi表示第 i 个物品的体积,定义V(i,j):当前背包容量 j,前 i 个物品最佳组合对应的价值,同时背包问题抽象化(X1,X2,…不放入物品i,价值为dp[i - 1][j]// 此时dp[i][j]的值等于不考虑当前物品i时,背包容量为j的最大价值,即dp[i - 1][j]其中V(i-1,j)表示不装,V(i-1,j-w(i))+v(i) 表示装了第i个商品,背包容量减少w(i),但价值增加了v(i);
2025-02-02 23:13:00
785
原创 数据结构(串,树的学习)
树是 n(n≥0)个结点的有限集合。当 n=0 时,称为空树;在任意一棵非空树中,有且仅有一个特定的称为根(Root)的结点;当 n>1 时,其余结点可分为 m(m>0)个互不相交的有限集合 T1、T2、……、Tm,其中每一个集合本身又是一棵树,并且称为根的子树。结点、树的属性描述:结点的层次(深度)----从上往下数结点的高度-----从下往上数树的高度(深度)------总共多少层结点的度------有几个孩子(分支)【度=0的即为叶子结点 】树的度------各节点的度的最大值。
2025-01-24 17:46:11
632
原创 数据结构(静态链表,栈,队列的学习)
定义:静态链表是一种用数组模拟链表的数据结构,兼具数组和链表的部分特性,它在一些特定场景下有独特的应用价值。
2025-01-22 19:53:19
968
原创 双链表以及循环链表的学习
双链表是一种链表数据结构,其中每个节点都包含两个指针,一个指向前一个节点(prev 指针),一个指向后一个节点(next 指针),还包含一个数据域用于存储数据。链表的头节点的 prev 指针通常指向 NULL,尾节点的 next 指针通常也指向 NULL。2.双链表的插入3.双链表的删除4.双链表的遍历。
2025-01-21 16:57:16
219
1
原创 单链表的建立
昨天我们初学了单链表知道了什么是单链表,单链表如何删除和插入,今天呢我们就来学习一下如何建立一个单链表。3.按位序插入建立单链表:分为带头结点和不带头结点。2. 头插法建立单链表。
2025-01-20 17:03:27
108
原创 DFS深度优先搜索的初步学习
DFS是一种暴力的采取递归的方式来解决问题的手段适用于长度适中的求解问题。例如一个简单的求最短路径问题:求表格中从起点走到终点所需的最少步数?
2025-01-13 21:27:59
341
原创 数据结构的初步学习以及其他内容
今天主要花费了大量的时间去刷oj上的题目了,对于新知识的学习不是很足。一.算法的时间复杂度这是最常用的表示时间复杂度的方法。它给出了算法运行时间的一个上界,即算法在最坏情况下的时间复杂度。例如,对于一个线性搜索算法,在最坏的情况下,需要遍历整个数组才能找到目标元素。如果数组的长度为n,那么时间复杂度可以表示为O(n)。常见的时间复杂度还有:如图其复杂程度大小如上下图所示:时间复杂度帮助程序员在设计算法和选择算法时评估其效率。在处理大规模数据时,选择一个时间复杂度较低的算法可以显著减少程序的运行时间。
2025-01-11 21:22:48
856
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人