数据结构与算法
D.Liang-TechBlog
AI码农
展开
-
栈实现DFS算法
DFS是搜索算法中非常常见的一种算法,通常实现的时候会通过递归调用的方式来实现,但是众所周知,当递归深度很深时可能会出现爆栈的情况。针对上述可能出现的问题,这里通过栈来实现DFS操作。...原创 2022-08-01 22:57:33 · 2055 阅读 · 0 评论 -
字符串/超大数据的哈希(hash)高效实现
哈希基本概念。字符串哈希。双向循环链表解决哈希冲突。哈希应用需要注意的一些问题。原创 2022-07-28 22:57:25 · 1167 阅读 · 0 评论 -
Heap(堆)的C++实现
Heap的实现原创 2022-07-10 22:01:32 · 858 阅读 · 0 评论 -
priority_queue删除
在STL中,priority_queue的底层实现是利用堆。priority_queue没办法实现O(1)复杂度进行任意元素的删除操作,可用利用两个priority_queue来实现。原创 2022-07-10 14:37:39 · 4132 阅读 · 0 评论 -
算法 | 并查集
并查集算法原理讲解。同时附带两道应用进行进一步说明和阐述。原创 2022-01-19 15:15:32 · 151 阅读 · 0 评论 -
数据结构 - 结构体/链表
// 指针Polynomial指向struct PolyNode类型struct PolyNode *Polynomial; // 定义新的类型,它的类型是指向PolyNode的结构体指针typedef struct PolyNode *Polynomial;原创 2021-07-24 22:53:09 · 1304 阅读 · 1 评论 -
数据结构 - 快速排序
利用快速排序算法对结构体进行排序,首先按照 data 的值进行升序排列,若 data 值相等则按照 index 值进行升序排列。对于该题若是数据量较少,可以使用的排序方式很多,比如:冒泡排序等等。 若是数据量较大,则应当选择时间复杂度较低的算法,快速排序算法则是比较好的选择。 快速排序的时间复杂度为 nlogn。快速排序主要步骤在数组中选择一个基准值(通常选择第一个元素为基准值); 将数组中小于基准值得数据移动到基准值的左边,大于基准值的数据移动到基准值的右边; 对于基准值左右两边的数据重原创 2021-08-19 23:22:56 · 482 阅读 · 1 评论 -
数据结构 - 堆栈
1 堆栈的主要操作2 栈的顺序存储栈的顺序存储结构通常由一个一维数组和一个记录 栈顶元素位置的变量组成。#include<iostream>#include<vector>using namespace std;#define MAX 100typedef struct SNode* StackPtr;struct SNode { int data[MAX]; int top;};StackPtr pushStack(StackPtr Stack原创 2021-08-09 23:37:09 · 222 阅读 · 0 评论 -
算法复杂度
1 复杂度定义空间复杂度S(n)—— 程序在执行时占用存储单元的长度。通常和输入数据的规模有关。S(n)过高可能导致内存超限,造成程序非正常中断。时间复杂度 T(n) —— 程序在执行时耗费时间的长度。通常和输入数据的规模有关。2 复杂度分析下图所示为不同复杂度随着n的逐渐增大所耗费的时间复杂度。Fig1 不同时间复杂度曲线Fig1的复杂度分析如下:在算法设计时,我们应当尽可能使得复杂度最小。 当算法复杂度为时,应想办法变为。 最高效的是。...原创 2021-07-20 23:47:30 · 349 阅读 · 0 评论