4.算法设计与分析
caigen001
不成魔不成活
展开
-
最大间隙问题(maxgap)的线性时间算法(C++)
问题描述:Given an unsorted array, find the maximum difference between the successive elements in its sorted form.Try to solve it in linear time/space. Return 0 if the array contains less than 2 element...原创 2019-03-22 19:53:20 · 1853 阅读 · 0 评论 -
最大间距(maxgap,leetcode,hard)
给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例2:输入: [10]输出: 0解释: 数组元素个数小于 2,因此返回 0。说明:你可以假设数组...原创 2019-03-22 23:09:49 · 432 阅读 · 0 评论 -
Java——快速排序(代码出现问题及分析)
今天,我看了一本算法书《啊哈,算法》,里面的快速排序算法思路非常简单易懂,图文并茂。我们先分析一下书上提供的内容,然后再分析我尝试实现的代码,出现的bug,以及问题分析。 快速排序又称分区交换排序法,是目前公认最佳的排序法。基本原理:先选定数据第一个元素作为基准数(或称锚点),作为数据中的一个虚拟的中间值,把小于中间值的数据放在其左边,而大于中间值的数据放在其右边。再以同样...原创 2019-05-01 23:34:35 · 722 阅读 · 0 评论 -
试讨论O(1)和O(2)的区别
大O表示法的定义:O(g(n)) = { f(n) :存在这样的正常数c和n0,使得对任意的n >= n0, 有0 <= f(n) <= cg(n)成立},则g(n)是f(n)的渐进上界。O(g(n))是指所有与g(n)具有相同增长率或比其增长率小的函数的集合。根据大O定义易知,O(1) = O(2)。用O(1)和O(2)表示同一个函数时,差别仅在于常...原创 2019-05-07 09:19:48 · 10173 阅读 · 1 评论 -
关于批处理作业调度问题中“完成时间和“的疑问
算法设计与分析(第4版)——王晓东动态规划:F1k = F1(k-1)+t1k;F2k = max{F1k, F2(k-1)}+t2k;解释:第一个公式:对于机器1来说,它一定是不停的工作,即机器1第k个作业的完成时间 = 机器1第(k-1)个作业完成时间 + 机器1第k个作业的处理时间。第二个公式:对于机器2来说,它在处理第k个作业前有两个可能的状态,...原创 2019-05-09 20:37:32 · 2566 阅读 · 0 评论 -
算法设计与分析——全排列问题算法分析(递归调用分析图)
(目前网上最易理解递归调用的分析过程——递归调用分析图)全排列:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。例如:1 、2 、3三个元素的全排列为:{1,2,3},{1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}。算法思路分析:设R={r...原创 2019-05-07 19:56:40 · 4859 阅读 · 0 评论