随笔分类 - 数据结构
摘要:处理冲突的方法 常用处理冲突的思路: 换个位置:开放地址法 同一个位置的冲突对象组织在一起:链地址法 开放定址法(Open Addressing) 一旦产生了冲突(该地址已有其他元素),就按某种规则去寻找另一空地址。 开放定址法 若发生了第i次冲突,试探的下一个地址将增加di,基本公式是: hi(k
阅读全文
摘要:已知的几种查找方法: 顺序查找 O(N) 二分查找(静态查找) O(log2N) 二叉搜索树、平衡二叉树 O(h) h为二叉查找树的高度 O(log2N) 查找的本质:一直对象找位置。 有序安排对象:全序、半序 直接“算出”对象位置:散列 散列查找法的两项基本工作: 计算位置:构造散列函数确定关键词
阅读全文
摘要:给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。 输入格式: 输入首先给出正整数N(≤105),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0, 50]。 输出格式: 按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。每项占一行。如果人数为0则不输出
阅读全文
摘要:一、桶排序 void Bucket_Sort(ElementType A[], int N) { count[]初始化; while(读入1个学生成绩grade) 将该生插入count[grade]链表; for(i=0;i<M;i++) { if(count[i]) 输出整个count[i]链表;
阅读全文
摘要:一、表排序 定义一个指针数组作为“表”(table) 如果仅要求按顺序输出,则输出: A[table[0]], A[table[1]] , ....., A[table[N-1]] N个数字的排列由若干个独立的环组成 Temp = f 如何判断一个环结束? if(table[i] = i) 二、复杂
阅读全文
摘要:一、分而治之 什么十快速排序算法的最好情况? 每次正好中分:T(N) = O(NlogN) void Quicksort(ElementType A[], int N) { pivot = 从A[]中选一个主元; 将S = { A[] \ pivot } 分成2个独立子集: A1 = { a属于S
阅读全文
摘要:According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insert
阅读全文
摘要:According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insert
阅读全文
摘要:一、归并排序 核心:有序子列的归并 如果两个子列一共有N个元素,则归并的时间复杂度是? T(N) = O(N) 二、递归算法 分而治之 T(N)=T(N/2)+T(N/2)+O(N) T(N)=O(NlogN) 统一函数接口 如果只在Merge中声明临时数组 void Merge(ElementTy
阅读全文
摘要:一、选择排序 无论如何:T = O(N2) 如何快速找到最小元 二、堆排序 算法1 T(N)=O(NlogN) 需要额外O(N)的空间,并且赋值元素需要时间 算法2 定理:堆排序处理N个不同元素的随机排列的平均比较次数是2NlogN - O(NloglogN)。 虽然堆排序给出最佳平均时间复杂度,但
阅读全文
摘要:一、希尔排序 定义增量序列 DM > DM-1 > … > D1 = 1 对每个 Dk 进行“Dk-间隔”排序( k = M, M-1, … 1 ) 注意: “Dk-间隔”有序的序列,在执行“Dk-1-间隔”排序后,仍然是“Dk-间隔”有序的 希尔增量序列 原始希尔排序 DM = [ N / 2 ]
阅读全文
摘要:一、前提 void X_Sort(ElementType A[], int N); 大多数情况下,为简单起见,讨论从小到大的整数排序 N是正整数 只讨论基于比较的排序(>=<有定义) 只讨论内部排序 稳定性:任意两个相等的数据,排序前后的相对位置不发生改变。 没有一种排序是任何情况下都表现最好的 二
阅读全文
摘要:Given the relations of all the activities of a project, you are supposed to find the earliest completion time of the project. Input Specification: Eac
阅读全文
摘要:现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。 输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的
阅读全文
摘要:有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。 输入格式: 输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤
阅读全文
摘要:拓扑排序 拓扑序:如果图中从V到W有一条有向路径,则V一定排在W之前。满足此条件的顶点序列成为一个拓扑序 获得一个拓扑序的过程就是拓扑排序 AOV如果有合理的拓扑序,则必定是有向无环图(Directed Acyclic Graph,DAG) 引入 如果 则称 a 为从 u 到 v 的弧(arc),u
阅读全文
摘要:This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the world's most famous spy, was captured by a group of d
阅读全文
摘要:哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将
阅读全文
摘要:一、最短路径问题的抽象 在网络中,求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径 这条路径就是两点之间的最短路径(Shortest Path) 第一个顶点为源点(Source) 最后一个顶点为终点(Destination) 二、问题分类 单源最短路径问题:从某固定源点出发,求其到所有其
阅读全文
摘要:一、定义 连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图。 强连通图:在有向图中,若任意两个顶点vi与vj都有路径相通,则称该有向图为强连通图。 连通图:在连通图中,若图的边具有一定的意义,每一条变都有对应着一个数,称为权,权代表着连接两个顶点的代价,称这种连通图叫做
阅读全文

浙公网安备 33010602011771号