数据结构
文章平均质量分 63
SunnyPotter
http://sunnypotter8.sinaapp.com/
展开
-
【转】C++ string CString详解
C++ string CString详解 转的,觉得很经典!前言: string 的角色 1 string 使用 http://www.cplusplus.com/reference/string/string/1.1 充分使用string 操作符 1.2 眼花缭乱的string find 函数 1.3 string i转载 2013-11-18 17:12:53 · 907 阅读 · 0 评论 -
查找算法之折半查找
#include #include #include int Binary_Search(int *a, int n, int key) { int low, high, mid; low = 1; high = n; // while(low <= high) { mid = (low+high)/2; if(key < a[mid]) high = mid -原创 2014-01-02 18:24:01 · 669 阅读 · 0 评论 -
排序之堆排序
链表:#include // 大根堆void HeapAdjust(SqList *L, int s, int n) { int temp, j; // temp = L->r[s]; for(j=2*s; j<=m; j*=2) { // 比较,记录j和j+1中较大的值,用于和temp比较 if(jr[j] r[j+1]) ++j; // 如果j和j+!中较大的值原创 2014-01-02 18:18:56 · 641 阅读 · 0 评论 -
排序算法之直接插入排序
#include void InsertSort(int *a, int n) { int i, j; for(i=2; i<=n; i++) { if(a[i] < a[i-1]) { a[0] = a[i]; for(j=i-1; a[j] > a[0]; j--) a[j+1] = a[j]; a[j+1] = a[0]; } }}int原创 2014-01-02 18:20:41 · 572 阅读 · 0 评论 -
排序算法之归并排序
链表:void MergeSort(SqList *L) { MSort(L->r, L_>r, 1, L->length);}void MSort(int SR[], int TR1[], int s, int t) { int m; int TR2[MAXSIZE+1]; if(s == t) { TR1[s] = SR[s]; } else { m = (s+t)原创 2014-01-02 18:21:56 · 551 阅读 · 0 评论 -
Dijkstra算法
#define MAXVEX 9#define INFINITY 65535typedef int Patharc[MAXVEX]; //用于存储最短路径下标的数组typedef int ShortPathTable[MAXVEX]; // 用于存储到各点最短路径的权值和void ShortestPath_Dijkstra(MGraph G, int V0, Pa原创 2014-01-08 15:12:29 · 829 阅读 · 0 评论 -
Floyd算法(弗洛伊德算法)
#define MAX 9#define INFINITY 65535typedef int Pathmatirx[MAXVEX][MAXVEX];typedef int ShortPathTable[MAXVEX][MAXVEX];void ShortestPath_Floyd(MGraph G, Pathmatirx *P, ShortPathTable *D)原创 2014-01-08 15:13:39 · 758 阅读 · 0 评论 -
Kruskal算法生成最小生成树
//先按权值把边的权值升序,begin和end存入边集数组中 // Kruskal算法生成最小生成树int Find(int *parent, int f) {while(parent[f] > 0) {f = parent[f];}return f;} void MiniSpanTree_Kruskal(MGraph G) {int i, n, m;原创 2014-01-08 15:14:15 · 856 阅读 · 0 评论 -
Prim 算法生成的最小生成树
//Prim 算法生成的最小生成树void MiniSpanTree_Prim(MGraph G) { int min, i, j, k; int adjvex[MAXVEX]; //保存相关顶点下标 int lowcost[MAXVEX]; //保存相关顶点间边的权值 lowcost[0] = 0; //V0作为最小生成树的根开始遍历,权值为0 adjvex[0] = 0原创 2014-01-08 15:14:58 · 713 阅读 · 0 评论 -
排序算法之冒泡排序
第一种(标准):#include #include #include void swap(int *a, int i, int j) { int temp = a[i]; a[i] = a[j]; a[j] = temp;}void BubbleSort(int *a, int m) { int i, j; // Something Different for(i=原创 2014-01-02 18:26:03 · 616 阅读 · 0 评论 -
优先队列用法(转),很不错,留着自己用
优先队列用法在优先队列中,优先级高的元素先出队列。标准库默认使用元素类型的优先队列的第一种用法,也是最常用的用法:priority_queueint> qi;通过故示例1中输出结果为:9 6 5 3 2第二种方法:在示例1中,如果我们要把元素从小到大输出怎么办呢?这时我们可以传入一个比较函数,使用functional.h函数对象作为比较函数。原创 2013-12-06 21:19:02 · 569 阅读 · 0 评论 -
C/C++ sort函数的用法(转),很常用,收着
sort函数的用法做ACM题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。使用这个函数,需要包含头文件。 这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。也就是原创 2013-12-06 22:08:03 · 769 阅读 · 0 评论