摘要:
## 最短路径问题的抽象 - 在网络中,求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径 - 这条路径就是两点之间的最短路径(Shortest Path) - 第一个顶点为源点(Source) - 最后一个顶点为终点(Destination) 问题分类: - 单源最短路径问题:从某固定源 阅读全文
摘要:
## 概念 - 最小生成树(Minimum Spanning Tree) - 最小生成树存在 ↔ 图连通 - 是一棵树 - 无回路 - |V|个顶点一定有|V|-1条边 - 向生成树中任加一条边都一定构成回路 - 是生成树 - 包含全部顶点 - |V|-1条边都在图里 - 边的权重和最小 ## 贪心 阅读全文
摘要:
## 概念 - 拓扑序:如果图中从V到W有一条有向路径,则V一定排在W之前。满足此条件的顶点序列称为一个拓扑序 - 获得一个拓扑序的过程就是拓扑排序 - AOV (Activity On Vertex) 如果有合理的拓扑序,则必定是 **有向无环图**(Directed Acyclic Graph, 阅读全文
摘要:
## 前提 `void X_Sort ( ElementType A[], int N )` - 大多数情况下,为简单起见,讨论从小到大的整数排序 - N是正整数 - 只讨论基于比较的排序(> = =0; P-- ){ flag = 0; for( i=0; i A[i+1] ) { Swap(A[ 阅读全文
摘要:
## 选择排序 ```c void Selection_Sort ( ElementType A[], int N ) { for ( i = 0; i =0; i-- )/* BuildHeap */ PercDown( A, i, N ); for ( i=N-1; i>0; i-- ) { S 阅读全文
摘要:
## 核心:有序子列的归并 ![归并](https://images.cnblogs.com/cnblogs_com/huangwenjie/2284066/o_230407021600_image.png) 如果两个子列一共有N个元素,则归并的时间复杂度是 $T ( N ) = O( N )$ ` 阅读全文
摘要:
## 快速排序 ![快速排序](https://images.cnblogs.com/cnblogs_com/huangwenjie/2284066/o_230407024446_image.png) 什么是快速排序算法的最好情况?每次正好中分 T(N) = O( NlogN ) ```c void 阅读全文
摘要:
## 间接排序 - 表排序适用于排列复杂结构的实体 - 表排序不移动实体,只移动指向实体的指针,也就是 **间接排序** - 定义一个指针数组作为“表”(table) ![表](https://images.cnblogs.com/cnblogs_com/huangwenjie/2284066/o_ 阅读全文
摘要:
## 桶排序 假设我们有 N 个学生,他们的成绩是0到100之间的整数(于是有 M = 101 个不同的成绩值)。如何在线性时间内将学生按成绩排序? ```c void Bucket_Sort(ElementType A[], int N) { count[]初始化; while (读入1个学生成绩 阅读全文