![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 69
andyyang0212
这个作者很懒,什么都没留下…
展开
-
动态规划(dynamic program)&& 最长公共子序列(LCS)
动态规划特征:1.最优子结构原创 2014-09-20 20:43:34 · 758 阅读 · 0 评论 -
优先队列二叉堆 C语言实现
#ifndef _BinHeap_Hstruct Heapstruct;typedef struct Heapstruct *PriorityQueue;PriorityQueue Initialize(int MaxElements);void Destroy(PriorityQueue h);void MakeEmpty(PriorityQueue h);void Insert(原创 2014-10-05 15:38:39 · 951 阅读 · 1 评论 -
快速排序(Quicksort)
最坏情况下O(n^2)每一次都有一个子序列是原创 2014-09-12 11:16:57 · 359 阅读 · 0 评论 -
广度优先搜索(BFS) C语言实现
伪代码原创 2014-10-18 17:58:12 · 12356 阅读 · 0 评论 -
AVL Tree C语言实现
#ifndef _AVLTree_Hstruct Avlnode;typedef struct Avlnode *Position;typedef struct Avlnode *Avltree;Avltree MakeEmpty(Avltree t);Position Find(int x,Avltree t);Position FindMin(Avltree t);Posit原创 2014-10-09 12:41:13 · 657 阅读 · 0 评论 -
Shell Sort C语言实现
void Shellsort(int a[],int n){ int increment,i,j,tmp; for(increment = n/2;increment>0;increment /= 2){ for(i = increment;i<n;i++){ tmp = a[i]; for(j = i;j>=increment&&a[j-increment]>tm原创 2014-10-17 10:55:09 · 683 阅读 · 0 评论 -
队列(Queue ADT)C语言实现
q->size来判断队列满或者空#ifndef _Queue_hstruct QueueRecord;typedef struct QueueRecord *Queue;int IsEmpty(Queue q);int IsFull(Queue q);Queue CreateQueue(int MaxElements);void DisposeQueue(Queue q);v原创 2014-10-05 14:46:22 · 913 阅读 · 0 评论 -
有向无回路图的拓扑排序 C语言实现
例子算法原创 2014-10-18 21:10:47 · 599 阅读 · 0 评论 -
深度优先搜寻(DFS) C语言实现
伪代码原创 2014-10-18 20:44:25 · 8491 阅读 · 0 评论 -
Binomial Queue C语言实现
typedef struct BinNode *Position;typedef struct Collection *BinQueue;typedef struct BinNode *BinTree;#define MaxTrees 500#define Infinity 32767struct BinNode{ ElementType element; Position left原创 2014-12-21 21:01:59 · 967 阅读 · 0 评论 -
关于sizeof的一切
转自http://www.cnblogs.com/wanghetao/archive/2012/04/04/2431760.html关于sizeof(string),今天看那本面试宝典的时候看到这个表达式,有点吃惊,书上写着sizeof(string)=4;当时很纳闷,难道分配4个字节大小的内存给string吗?查阅了相关资料得出结论:string的实现在各库中可能有所不同,但是在同一库中转载 2015-02-02 16:11:52 · 293 阅读 · 0 评论 -
堆排序(heapsort)
1.在原数组的基础上改造成二叉堆,先从最下面一个父节点原创 2014-09-12 20:36:24 · 364 阅读 · 0 评论 -
二叉树 根据前序遍历和中序遍历 或者 后序遍历和中序遍历建树
根据前序遍历和中序遍历 建树原创 2014-10-31 21:04:39 · 395 阅读 · 0 评论 -
中缀算式转后缀算式
#include#include#include#ifndef _Stack_hstruct StackRecord;typedef struct StackRecord *Stack;int IsEmpty(Stack s);int IsFull(Stack s);Stack CreateStack(int MaxElements);void DisposeStack(St原创 2014-10-30 11:15:17 · 4001 阅读 · 0 评论 -
插入排序(insert sort)
第i次排序将a[i]排到0-i中合适的位置,对于原创 2014-09-10 21:35:12 · 324 阅读 · 0 评论 -
Algorithm X
1.Algorithm X 是一种递归的,深度优先的回溯的算法原创 2014-09-09 09:07:12 · 926 阅读 · 0 评论 -
归并排序(merge sort)
归并排序利用分治算法1 divide:将数组 分两部分原创 2014-09-11 19:21:20 · 727 阅读 · 0 评论 -
分治法(divide-and-conquer)
过程1.divide2.conquer3.combine1.二分查找(binary search)原创 2014-09-11 20:11:54 · 753 阅读 · 0 评论 -
解递归式(分析递归式的算法复杂度)
算法设计中经常会用到递归,利用递归式的方法可以清晰地显示算法的整个过程,而对于分析算法的复杂度,解递归式就有了用处,这里的方法来自于《算法导论》。(一)代换法:实质上就是数学归纳法,先对一个小的值做假设,然后推测更大的值得正确性。由于是数学归纳法,那么我们就需要对值进行猜测。现在,我们看下面这个例子:我们先假设一个结论T(n) = O(lg(n - b)),并且原创 2014-09-11 10:07:20 · 1390 阅读 · 0 评论 -
快速选择 randomized select
void swamp(int *a,int *b){ int tmp; tmp = *a; *a = *b; *b = tmp;}int randselect(int a[],int begin,int end,int x){ int k,j,i,n; n = end - begin +1; if(n <= 1) return a[begin]; k =begin + rand原创 2014-09-13 15:03:47 · 565 阅读 · 0 评论 -
欧拉算法最大公约数(gcd)&&最大子序列和
int gcd(int a,int b){ int tmp; while(a&&b){ tmp = a % b; a = b; b = tmp; } return a;}原创 2014-09-26 20:55:33 · 1703 阅读 · 0 评论 -
链表ADT
#ifndef _LIST_Hstruct Node;typedef struct Node *PtrToNode;typedef PtrToNode List;typedef PtrToNode Position;int IsEmpty(List l);int Islast(Position p,List l);Position Find(int x,List l);void原创 2014-09-26 22:47:58 · 448 阅读 · 0 评论 -
Binary Tree ADT
int height(struct binarytree *T);void printtree(struct binarytree *T);void makeempty(struct binarytree *T);struct binarytree* find(struct binarytree *T,int x);struct binarytree* findmin(struct bin原创 2014-09-19 16:26:06 · 528 阅读 · 0 评论 -
线索二叉树的建立与遍历
struct threadedtree{ int leftthread; struct left; int rightready; struct right; int n;}struct threadedtree *pre;void InThreading(threadedtree *t){ if(t){ InThreading(t->left); if(!t->lef原创 2014-10-12 10:37:41 · 377 阅读 · 0 评论 -
栈(stack)C语言链表实现&&数组实现
#ifndef _Stack_hstruct Node;typedef struct Node *PtrToNode;typedef PtrToNode Stack;int IsEmpty(Stack s);Stack CreateStack();void DisposeStack(Stack s);void MakeEmpty(Stack s);void Push(int x原创 2014-09-30 14:09:30 · 522 阅读 · 0 评论 -
poj 3461 Oulipo kmp字符串匹配
//#include <iostream>#include <stdio.h>#include <string.h>using namespace std;//string a,b;char a[10000],b[1000000];int asize,bsize;int kmp(){ int *pi = new int [asize]; pi[0] = -1; fo原创 2015-08-01 18:17:09 · 527 阅读 · 0 评论