随笔分类 -  数构

摘要:查找算法评价指标 平均查找长度 查找成功或不成功的 ASL =Σ 概率*比较次数 等概率时与数组是否有序无关,不等概率与序列有关。顺序查找:ASL=(n+1)/2折半查找:构建一颗判定树,每个数的层数就是查找到需要的比较次数。比较n次可以找到2^(n-1)个数字。树表:二叉排序树,充分必要条件是中序遍历是递增的。散列表:Hash1.二叉排序树假设被删结点是*p,其双亲是*f,不失一般性,设*p是*f的左孩子,下面分三种情况讨论:(1) 若结点*p是0度,则只需修改其父结点*f的指针即可(2) 若结点*p是1度,则只要使PL或PR 成为其父结点的左子树(3) 若结点*p是2度,先找到*p的中序后 阅读全文
posted @ 2013-12-03 11:06 匡时@下一站.info 阅读(372) 评论(0) 推荐(0) 编辑
摘要:适合顺序结构的是:折半插入排序、希尔排序、快速排序、堆排序适合链式结构的是:直接插入排序、归并排序不稳定:快速排序、希尔排序、堆排序/选择排序。稳定:冒泡排序、插入排序、归并排序、基数排序。一、冒泡(Bubble)排序 稳定void Sort() { bool flag = 1; for (int i = 1; i num[j + 1]) { swap(num[j], num[j + 1]); flag = 1; } } }}效率 O(n²),适用于排序小列表。在相邻数字相同时不... 阅读全文
posted @ 2013-11-30 01:17 匡时@下一站.info 阅读(1846) 评论(0) 推荐(1) 编辑
摘要:一,树状数组很简单的一种数据结构,用数字二进制的规律 lowbit = x&(x^(x-1))求出数字二进制末尾0的个数为2的幂次的值,这个数就管这么多个数,巧妙的用一个数代表一个区间的和解决单值修改&区间查询,和区间修改&单值查询问题很赞分为一维和二维,多维HDU 2430 区间最值查询#include using namespace std;#define MAXN 50003int C[2][MAXN], num[MAXN];int Lowbit[MAXN];int nCount;void Init() { for (int i = 1; i 0) { nMin 阅读全文
posted @ 2013-11-06 18:27 匡时@下一站.info 阅读(410) 评论(0) 推荐(0) 编辑
摘要:大二上《数据结构》《操作系统》作业和实验代码随着大二上学期结束,本博文完结停止更新。完整操作系统部分代码见博文《理解操作系统相关知识》1.数据结构实验一#include #include #include #include using namespace std;#define MAXN 100004typedef unsigned int uint;const int mut1 = 127;const int mut2 = 131;const int MOD = 2000007;const unsigned int INF = 0x3fffffff;struct hash_map { ... 阅读全文
posted @ 2013-11-03 23:22 匡时@下一站.info 阅读(439) 评论(0) 推荐(0) 编辑
摘要:树的一些性质二叉树:第i层至多有2^(i-1)个节点,至少有1个;深度为k的二叉树至多有2^k-1个节点,至少有k个节点。节点总数=边数(总度数)+1=二度点*2+一度点+1=二度点+一度点+叶子节点 推出 二度点+1=叶子节点个数完全二叉树:n个结点的叶子节点个数有 n/2 向上取整个。深度为logn/log2+1。顺序存储时若1存根节点,则2n为左结点,2n+1为右结点。二叉链表:n个结点共有2n个指针域,其中n-1个表示结构,n+1个空指针。利用起来这些空指针为线索二叉树。先序/中序/后序线索二叉树:LTag=0, lchild域指向左孩子;LTag=1, lchild域指向其前驱RTa 阅读全文
posted @ 2013-11-03 20:26 匡时@下一站.info 阅读(681) 评论(0) 推荐(0) 编辑