
排序_归并排序
简述 归并排序思想,假设对数组A[p...r]排序: 分解 将数组A[p...r]平均划分为2子数组A[p...q-1]个A[q...r],一直划分直到每个子数组只有1个元素 归并 对 A[p...q-1]和A[q....
简述 归并排序思想,假设对数组A[p...r]排序: 分解 将数组A[p...r]平均划分为2子数组A[p...q-1]个A[q...r],一直划分直到每个子数组只有1个元素 归并 对 A[p...q-1]和A[q....
单链表 // head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点 int head, e[N], ne[N], idx; // 初始化 void init() { h...
简述 插入排序思想,假设对数组A[p...r]排序: 维持不变式:设当前排序的元素是 A[q],则保持A[p...q-1]为排好的,A[q]在A[p...q-1]中找到它的位置坐下 复杂度 O(n^2) 原地排序 实...
树与图的存储 树是一种特殊的图,与图的存储方式相同。 对于无向图中的边ab,存储两条有向边a->b, b->a。 因此我们可以只考虑有向图的存储。 邻接矩阵:g[a][b] 存储边a->b 邻接表:...
简述 也叫折半查找,性能优异。 但是所查找的数列必须是有序序列。 复杂度 时间复杂度 log2(N) 实现 非递归实现 int BinarySearch(int array[],int key,int length)...
试除法判定质数 bool is_prime(int x) { if (x < 2) return false; for (int i = 2; i <= x / i; i ++ ) if (x % i =...
简述 任何一个节点都有两个强引用指向左右子节点,以及一个弱引用指向它的父节点。节点还包括一个key成员保存数据内容。 实现 template<typename KType> struct BinaryTr...
简述 从数据的第一个元素开始,依此比较,直到找到目标或者查找失败 复杂度 时间复杂度 N 实现 int SeqSearch(int array[],int key,int length) { int (int ind...
时间复杂度 O(1) O(logn) O(n) O(nlogn) O(n^2) O(n^3) O(2^n) O(n!) O(n^n) $$ O(1) < O(log_n)<O(n)<O(nlog_n...
定义 假设文本是一个长度为n的数组 T[1...n],而模式是一个长度为m的数组P[1...m],其中m<=n。进一步假设P和T的元素都是来自一个有限字母集合M的字符。如M={0,1}或者M={a,b,c,.....