- 博客(24)
- 收藏
- 关注
原创 不相交集ADT
1.等价关系 等价关系就是具有以下三个性质的关系: a.自反性 b.对称性 c.传递性 2.动态等价性问题 (1)输入N个集合的类,每个集合含有一个元素,初始的描述是所有的关系均为false,每个集合的元素都互异,即这些集合不相交. (2)两种运算 a.Find,返回包含给定元素的集合,即等价类的名字 b.Union添加关系,首先看a和b是不是已经有关系,即对a和b执行Find并检
2016-01-03 21:51:25 366
原创 不相交集--C语言实现
disjset.h#ifndef _DisjSet_H_#define _DisjSet_H_#define NumSets 100typedef int DisjSet[NumSets + 1];typedef int SetType;typedef int ElementType;void Initialize(DisjSet S);void SetUnion(DisjSet S, S
2016-01-03 21:47:24 455
原创 常见的几种排序算法
sort.c#include<stdio.h>#include<stdlib.h>#include<string.h>#define LeftChild(i) (2*(i)+1)#define Cutoff (3)#define MaxM 100#define BucketCap 10#define BitsOfNum 10typedef int ElementType;void I
2016-01-03 01:08:33 341
原创 排序
1.预备知识 基于比较的排序 2.插入排序 O(N^2) 3.简单排序算法的下界 (1)数组的一个逆序是指数组中具有性质i 小于j,但A[i]>A[j]的序偶(A[i],A[j]). 逆序数是需要由插入排序(非直接)执行的交换次数.交换两个不按原序排列的相邻元素消除一个逆序。由此可得可以通过计算排列中的平均逆序数而得出插入排序平均运行时间的精确的界. (2) 定理1:N个互异数的数组的平
2016-01-01 21:29:25 399
原创 二项队列--C语言实现
binqueue.h#ifndef _BINQUEUE_H_#define _BINQUEUE_H_#define MaxTrees 100#define Capacity 1000struct BinNode;struct Collection;typedef int ElementType;typedef struct BinNode *Position;typedef Posit
2016-01-01 17:24:52 638
原创 斜堆--C语言实现
skewheap.h#ifndef _SKEWHEAP_H_#define _SKEWHEAP_H_#define Insert(X,H) (H=Insert((X),H))struct TreeNode;typedef struct TreeNode *PriorityQueue;typedef int ElementType;PriorityQueue Initialize();Ele
2016-01-01 12:41:29 383
原创 左式堆--C语言实现
leftheap.h#ifndef _LEFTHEAP_H_#define _LEFTHEAP_H_#define Insert(X,H) (H=Insert1((X),H))#define DeleteMin(H)(H=DeleteMin1(H))struct TreeNode;typedef struct TreeNode *PriorityQueue;typedef int Elem
2016-01-01 11:03:22 778 1
原创 二叉堆--C语言实现
binheap.h#ifndef _BINHEAP_H_#define _BINHEAP_H_#define MinPQSize 100struct HeapStruct;typedef int ElementType;typedef struct HeapStruct *PriorityQueue;PriorityQueue Initialize(int MaxElements);vo
2015-12-31 14:59:45 546
原创 优先队列<堆>
1.模型 两个基本操作: Insert等价Enqueue DeleteMin删除最小者–Dequeue 2.简单的实现 (1)简单链表–遍历删除Min或者排序删除Min (2)使用二叉查找树。 反复除去Min会使得树不平衡,并且BST还支持许多不需要的操作。 3.二叉堆 优先队列的实现普遍使用二叉堆,堆有两个性质–结构性和堆序性,对堆的一次操作可能破坏两个性质中的一个,因此堆的操作
2015-12-31 01:25:08 737
原创 开放定址散列表--C语言实现
hashtable.h#ifndef _HASHTABLE_H_#define _HASHTABLE_H_#define MinTableSize 10000#define Prime 10007typedef unsigned int Index;typedef Index Position;struct HashTbl;typedef struct HashTbl* HashTabl
2015-12-30 21:38:55 354
原创 分离链接散列表--C语言实现
hashtable.h#ifndef _HASHTABLE_H_#define _HASHTABLE_H_#define MinTableSize 100#define Prime 10007struct ListNode;typedef struct ListNode* Position;struct HashTbl;typedef struct HashTbl* HashTable;
2015-12-30 18:07:39 473
原创 散列
1.基本思想 结构:包含有关键字的具有固定大小的数组。每个关键字被映射到从0到TableSize-1这个范围中的某个数,并且被放到适当的单元中,这个映射就叫做散列函数。理想状态下它应该运算简单并且保证任何两个不同的关键字映射到不同的单元,不过这是不可能的,因为单元数目有限而关键字实际上是用不完的,因此我们寻找一个散列函数,该函数要在单元之间均匀的分配关键字,并决定当两个关键字散列到
2015-12-30 15:27:08 556
原创 List--C++模板类
#ifndef _PACKAGE_H_#define _PACKAGE_H_//数组实现namespace list_in_array{ template<typename T> class List { private: enum { bad = -1 }; enum { MAX = 100 }; T elem
2015-12-30 12:29:17 257
原创 Queue--C++模板类
#ifndef _PACKAGE_H_#define _PACKAGE_H_//链表实现namespace queue_in_list{ template<typename T> class Queue { private: struct Node { T data; struct
2015-12-30 12:25:48 364
原创 Stack--C++模板类
#ifndef _STACK_H_#define _STACK_H_//数组实现namespace stack_in_array{ template <typename T> class Stack { private: enum { MAX = 100 }; T elements[MAX]; int top;
2015-12-30 12:23:56 275
原创 Stack链表C实现
stack.h#ifndef STACK_H_#define STACK_H_struct Node;typedef struct Node * PtrToNode;typedef PtrToNode Stack;typedef int ElementType;int IsEmpty(Stack S);Stack CreateStack();void MakeEmpty(Stack S)
2015-12-30 12:13:12 359
原创 静态链表--C语言实现
list.h#ifndef _LIST_H_#define _LIST_H_#define SpaceSize 100typedef int PtrToNode;typedef PtrToNode List;typedef PtrToNode Position;typedef int ElementType;int IsEmpty(const List L);int IsLast(con
2015-12-30 11:38:41 338
原创 动态链表--C语言实现
list.h#ifndef _LIST_H_#define _LIST_H_struct Node;typedef int ElementType;typedef struct Node *PtrToNode;typedef PtrToNode List;typedef PtrToNode Position;List MakeEmpty(List L);int IsEmpty(List
2015-12-30 11:03:25 365
原创 BST树--C语言实现
bsttree.h#ifndef _BSTTREE_H_#define _BSTTREE_H_struct BstNode;typedef int ElementType;typedef struct BstNode *Position;typedef struct BstNode *BstTree;BstTree MakeEmpty(BstTree T);Position Find(E
2015-12-30 01:40:27 641
原创 AVL树--C语言实现
avltree.h#ifndef _AVLTREE_H_#define _AVLTREE_H_struct AvlNode;typedef struct AvlNode* Position;typedef struct AvlNode* AvlTree;typedef int ElementType;AvlTree Insert(ElementType x, AvlTree T);Avl
2015-12-30 00:36:43 357
原创 树
1. 预备知识 (1)实现 孩子兄弟表示法 (2)遍历及其应用 a.先序遍历 b.后序遍历 2.二叉树 (1)表达式树 a. 先序遍历–前缀表达式–不常用 b. 中序遍历–中缀表达式–直观 c. 后序遍历–后缀表达式–求值无须考虑优先规则 (
2015-12-29 00:03:35 452
原创 表、栈和队列
1.抽象数据类型 (1). 抽象概念的存储数据结构及其可能的操作集合。 (2) 好处: a. 编写一次,重复调用,代码重用率高 b. 修改实现代码不影响接口使用代码,利于修改和调试 (3)目标: a. 函数模块化 b.实现和接口分离 2.表 (1)数组实现 空间开销大,且不利于插入和删除,故一般不用来
2015-12-28 19:23:08 278
原创 算法分析
常见符号 a. Θ—增长率相同 b. Ο—增长率小于等于—上界 c. Ω—增长率大于等于—下界 d. Ο—增长率严格小于 2.最大子序列问题 递归方法—分治策略—N logN 联机算法—常量空间线性时间运行的在线算法–N#include<cstdio>#include<algorithm>using namespace std;int *arr;int n;void Rea
2015-12-28 00:28:03 336
原创 引论
级数公式 (1)几何级数公式: 如果 ,则 且当N趋向无穷,结果趋向于. (2) 算数级数公式: 一般的, 特别的(调和和),k=-1时, 常见证明方法 (1)归纳证明法 a.基准情形 b.归纳假设 c.进行证明 (2) 反证法 假设结论不成立,推出矛盾
2015-12-27 21:29:42 261
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人