数据结构
文章平均质量分 74
xutian_curry
这个作者很懒,什么都没留下…
展开
-
优先级队列的使用方法
基本操作priority_queue <int> q; q.push(105);//元素按照优先级顺序入队 q.push(2); q.push(100); cout << q.size()<<endl;//返回队列中的元素个数 cout << q.top()<<endl; q.pop();/...原创 2018-04-07 16:47:22 · 1098 阅读 · 1 评论 -
复杂排序之归并排序
归并排序的时间复杂度是O(nlogn),与快速排序和堆排序最大的不同是归并排序是稳定的,但它需要额外的O(n)的空间复杂度利用递归的方法进行排序void Merge( ElementType A[], ElementType TmpA[], int Left, int Mid, int Right ){ /* 将有序的A[Left]~A[Mid-1]和A[Mid]~A[Right]归并成一个有序...原创 2018-04-24 21:49:02 · 104 阅读 · 0 评论 -
简单排序算法
选择排序:选择排序思想是每次找到未排元素中的最小元素放到已排好元素的末尾template<typename T>void selectSort( T arr[],int n ){ for( int i = 0; i < n; i ++) { int minIdex = i; for( int j = minIdex; j <...原创 2018-04-24 17:33:51 · 124 阅读 · 0 评论 -
c++中set的常见的使用方法
点击打开链接对于升序序列来说iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bound( const key_type &key ):返回一个迭代器,指向键值<=key的最后一个元素的后一个元素。 ...转载 2018-04-22 16:54:53 · 422 阅读 · 0 评论 -
二叉树的操作之由中根和后跟序列重建二叉树
#include <iostream>#include <vector>#include <string>#include <malloc.h>#include <stdio.h>#include <string.h>using namespace std;typedef struct node{ in...原创 2018-04-06 12:00:31 · 1578 阅读 · 0 评论 -
栈的应用之括号匹配
#include <iostream>#include <string>#include <algorithm>#include <string.h>#include <stack>using namespace std;int main(int argc, char *argv[]){ char str[10...原创 2018-04-05 15:31:03 · 102 阅读 · 0 评论 -
赫夫曼树的c语言实现
一颗有n个叶子结点的赫夫曼树共有2*n-1,可以储存在一个一维数组中。编码时候需要从叶子到根的路径。故对每一个结点而言,需要知道双亲的信息和孩子的信息。故利用以下存储结构typedef struct{ int weight; int parent,lchild,rchild;}HTNode,*HuffmanTree;//动态分配数组储存赫夫曼树赫夫曼树的构造算法:1.每次从树的...原创 2018-04-03 16:28:22 · 1545 阅读 · 0 评论 -
图之图的建立
一、数组表示法const int MaxVertexNum = 10000;typedef int WeightType;struct GNode{ int Nv;//顶点数 int Ne;//边的数目 WeightType G[MaxVertexNum][MaxVertexNum];//邻接矩阵};typedef GNode *PtrToGNode;typed...原创 2018-04-10 17:33:15 · 453 阅读 · 0 评论 -
堆的c语言实现
堆的特性:1.结构性:是一个完全二叉树(所以可以用数组储存)2.有序性:任意结点的关键字都是其子树所有结点的最大值用数组的方式来表示最大堆typedef int ElementType;#define MaxDate 100000;typedef struct HeapStruct{ ElementType *Elements; int Size;//当前元素个数 in...原创 2018-04-02 21:48:07 · 862 阅读 · 0 评论 -
优先级队列的应用 之对扑克牌排序
#include <iostream>#include <queue>#include <functional>#include <stdio.h>#include <string.h>using namespace std;struct node{ char color; char data; int i...原创 2018-04-07 19:50:39 · 303 阅读 · 0 评论 -
快速排序
步骤为:1. 选主元(取头中尾的中位数)2. 子集划分3.递归左半边4.递归右半边注意的地方是当数组元素个数较少时,快速排序时间性能不高,故设定阈值,当元素数目高于阈值时,使用快速排序,低于阈值时使用插入排序。快速排序的平均时间复杂度为O( n log n ) , 最坏情况时间复杂度为 O( n^2 ) 递归需要O( logn )的空间复杂度,排序算法是不稳定的typedef int Elemen...原创 2018-04-25 20:42:56 · 115 阅读 · 0 评论