![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法导论第二版
文章平均质量分 65
zixiawzm
这个作者很懒,什么都没留下…
展开
-
9.3 最坏情况下的线性时间选择算法
#include #include #include using namespace std; void init(vector& v, int n) //初始化,产生n个随机数{ srand((unsigned)tim原创 2011-08-30 16:41:22 · 195 阅读 · 0 评论 -
13 红黑树
#include using namespace std;typedef enum col{RED, BLACK} col;template class RBNode{public: RBNode(T k, RBNode* l=NULL, RB原创 2011-09-18 13:58:27 · 190 阅读 · 0 评论 -
15 动态规划-装配线调度
#include using namespace std; int n; // 一个装配线上有n个装配站int e1, e2; // 进入装配线1,2需要的时间int x1, x2;原创 2011-09-30 21:15:34 · 231 阅读 · 0 评论 -
15 思考题 编辑距离
/*描述:设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括:(1)删除一个字符;(2)插入一个字符;(3)将一个字符改为另一个字符。将字符串A变换为字符串B所用的最少字符操作数称为字符串A到B的编辑距离,记为d(A,原创 2011-10-01 18:03:44 · 1334 阅读 · 0 评论 -
6.2 保持堆的性质
#include #include #include using namespace std;void input(vector &v){ cout<<"please enter the array:"<<endl; int data; w原创 2011-08-18 12:42:56 · 309 阅读 · 0 评论 -
18 Bellman-Ford算法
#include using namespace std;const int maxnum = 100;const int maxint = 99999; // 边typedef struct Edge{ int u, v; // 起点,终点原创 2011-10-15 09:48:05 · 246 阅读 · 0 评论 -
Lecture 16 最小生成树 Prim算法
Prim算法例如下面的无向连通图: #include #include #include using namespace std;struct TreeNode // 边结点定义{public: TreeNode (int原创 2011-10-07 11:14:36 · 2911 阅读 · 0 评论 -
17 单源最短路径,以及补全16讲MST的一些代码
16、17讲开始涉及到图,光是伪代码的话实现起来不是很直接,所以干脆补全一下需要用到的图的类定义及一些成员函数,限于篇幅,成员函数、最小堆、并查集等的实现没有贴出来。 graph类定义template class Graph{public: Graph原创 2011-10-08 17:04:08 · 1151 阅读 · 0 评论 -
19 Froyd-Warshall算法
Froyd-Warshall算法用于求解所有点对之间的最短距离,其中权值可以为负值,但是不能有负数的环。时间复杂度为O(n^3)。 该算法的思路是, 第一步:所有从 i 到 j 的最短路径为i、j之间的权值(不相连的话就设为某个MAX数值)原创 2011-10-19 14:43:37 · 406 阅读 · 0 评论 -
2.思考题 逆序对
只需要修改归并排序#include #include #include #define INFINITE 1000 using namespace std;int count=0;void input(vector& v) { cout<<"please enter the number(<1000):"<<endl; int data;原创 2011-08-15 21:06:28 · 179 阅读 · 0 评论 -
6.3 建立最大堆
#include #include #include using namespace std;void input(vector &v){ cout<<"please enter the data:"<<endl; int data; v.push_back(0); //v[0]=0,从v[1]开始建立最大堆,否则根节点无法操作(子节点为v[2原创 2011-08-18 14:53:32 · 231 阅读 · 0 评论 -
6.5 优先级队列
#include #include #include using namespace std;void init_v(vector& v){ v.push_back(0);}void add_elem(vector& v, int data) //增加元素{ v.push_back(data); int child=v.size()-1;原创 2011-08-20 09:54:38 · 156 阅读 · 0 评论 -
15.4 最长公共子序列
#include using namespace std;char x[30], y[30];int c[30][30];char b[30][30];void LCS(){ int m=strlen(x+1); int n=strlen(原创 2011-09-29 13:18:48 · 344 阅读 · 0 评论 -
Lecture 12 跳表
#include #include #include using namespace std;const int DefaultSize=100;template struct SkipNode{ E data; SkipNode * *原创 2011-09-25 14:23:29 · 261 阅读 · 0 评论 -
9.2 第i个顺序统计量
运行时间为θ(n)#include #include #include #include using namespace std; void input(vector& v) {原创 2011-08-29 13:42:42 · 266 阅读 · 0 评论 -
11.4 双重散列法
#include #include #include #include #include #define slot_size 100000 //散列槽的大小#define arr_size 80000 //动态关键字集合#define min_s原创 2011-09-04 12:40:20 · 2435 阅读 · 0 评论 -
11.3 除法散列法
#include #include #include #include #include #define slot_size 20000 //散列槽的大小#define arr_size 100000 //动态关键字集合#define min_si原创 2011-09-03 10:09:11 · 521 阅读 · 0 评论 -
9.3 最坏情况下线性时间选择
#include#include#include#define MAX_VALUE 10000#define random() rand()%MAX_VALUE#define N 10000using namespace std;int a原创 2011-09-01 13:39:27 · 335 阅读 · 0 评论 -
2.3.1 归并排序
#include #include #include #define INFINITE 1000 //设立监视哨using namespace std;void input(vector& v) //输入数据{ cout原创 2011-08-15 13:20:51 · 156 阅读 · 0 评论 -
2.1 插入排序
#include #include #include using namespace std;int main(int argc, char *argv[]){ vector array; int data; while(原创 2011-08-13 19:33:44 · 151 阅读 · 0 评论 -
12 二叉查找树
#include using namespace std;typedef struct Node //树结点定义{ int key; Node *lchild, *rchild, *parent; }Node, *BSTree; Nod原创 2011-09-14 16:06:47 · 202 阅读 · 0 评论 -
7.1 快速排序
#include #include #include using namespace std;void input(vector& v){ cout<<"please enter the numbers:"<<endl; int data; w原创 2011-08-21 14:37:14 · 161 阅读 · 0 评论 -
7.3 快速排序的随机化版本
运行时间为nlgn #include #include #include #include using namespace std;void input_v(vector &v){ int data; while(cin>>原创 2011-08-23 21:14:16 · 221 阅读 · 0 评论 -
8.2 计数排序
#include #include #include using namespace std; void input(vector& v) { int data; while(cin>>data)原创 2011-08-24 20:20:23 · 161 阅读 · 0 评论 -
8.3 基数排序
#include #include #include using namespace std; const int NUM=3; //位数void input(vector& v) {原创 2011-08-25 20:00:38 · 135 阅读 · 0 评论 -
8.4 桶排序
数据在(0,1)之间#include #include #include using namespace std;/*initial arr*/void InitialArr(double *arr,int n){ srand((unsign原创 2011-08-26 13:55:04 · 173 阅读 · 0 评论 -
6.4 堆排序算法
#include #include #include using namespace std;void input(vector &v){ cout<<"please enter the data:"<<endl; int data; v.push_back(0); while(cin>>data) v.push_back(data)原创 2011-08-19 13:13:37 · 206 阅读 · 0 评论