′问题描述: 最大间隙问题:给定 n 个实数 n x , x , , x 1 2 ? ,求这 n 个数在实轴上相邻 2 个数之间的最 大差值。假设对任何实数的下取整函数耗时O(1) ,设计解最大间隙问题的线性时间算法。 ′编程任务: 对于给定的 n 个实数 n x , x , , x 1 2 ? , ...
分类:
其他好文 时间:
2019-10-02 19:05:27
阅读次数:
75
找出的基准x至少比3(n-5)/10个元素大,因为在每一组中有2个元素小于本组的中位数,中位数处于1/2*[n/5-1]=(n-5)/10,即n/5个中位数中又有(n-5)/10个小于基准x。同理,基准x也至少比3(n-5)/10个元素小。而当n≥75时,3(n-5)/10≥n/4所以按此基准划分所 ...
分类:
编程语言 时间:
2019-09-13 22:42:19
阅读次数:
123
数组元素在内存中的地址是相连的;链表中的元素可存储在内存的任何地方,链表的每个元素都存储了下一个元素的地址; 数组 链表读取 O(1) O(n)插入 O(n) O(1)删除 O(n) O(1)O(n)=线性时间O(1)=常量时间 ...
分类:
编程语言 时间:
2019-09-06 13:00:33
阅读次数:
66
十大经典排序算法(动图演示) 转: 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下 ...
分类:
编程语言 时间:
2019-08-27 20:58:08
阅读次数:
68
在计算机科学领域中,有向图的拓扑排序是其顶点的先行排序,对于每个从顶点u到顶点v的有向边uv,在排序的结果中u都在v之前。 如果图是有向无环图,则拓扑排序是可能的(为什么不说一定呢?) 任何DAG具有至少一个拓扑排序,并且这些已知算法用于在线性时间内构建任何DAG的拓扑排序 图论:是组合数学的一个分 ...
分类:
编程语言 时间:
2019-08-26 15:27:31
阅读次数:
128
十大经典算法排序总结对比 一张图概括: 主流排序算法概览 主流排序算法概览 n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同 冒泡排序(Bubble Sort) 当输入的数据已经是 ...
分类:
编程语言 时间:
2019-08-21 16:26:01
阅读次数:
90
一、分治法 递归,找最大值最小值,整数相乘,归并排序,快速排序,线性时间选择,最近点对问题 二、动态规划 0-1背包问题 ,矩阵相乘问题,装配线调度问题,最长公共子序列,最优二分检索树,凸多边形最优三角剖分 三、贪心法 背包问题,活动选择问题,哈夫曼编码,最小生成树算法(Kruskal 和 Prim ...
分类:
编程语言 时间:
2019-08-12 23:38:19
阅读次数:
123
一种由Robert Tarjan提出的求解有向图强连通分量的线性时间的算法。 Tarjan与无向图连通性 ·几个定义 给定无向图$G=(V,E)$ 如果割掉点x,图中的连通块数量增加,则称x为G的 割点 如果割掉边e,图中的连通块数量增加,则称e为G的 桥 或 割边 ·时间戳 在图的深度优先搜索中, ...
分类:
编程语言 时间:
2019-08-10 21:58:57
阅读次数:
117
线性类,指线性时间复杂度可以完成的题。在1051到1100中,有7道: 可以看到线性题一般分数不高,一般只有模拟事件的题会出30分,但也不难。 这种题一般一看就会做(最大子列和除外),难度一般在细节处理(所有PAT题都是)和时间常数上。 关于细节处理,分数低的题,本来就简单,做的时候容易想起一些细节 ...
分类:
其他好文 时间:
2019-08-10 19:12:31
阅读次数:
95
排序算法中最快、最简单的排序算法,及其耗费内存。 原理 把同类元素放在相同的桶里,每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序),桶本身是有序的! 1、确定桶的数量; 2、遍历列表,把元素放到对应的桶里; 3、重复2; 4、把排序好的元素放回原列表,知道排序完成; ...
分类:
编程语言 时间:
2019-08-09 23:50:01
阅读次数:
97