- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是来自 CLRS 的问题 2-1.b。我不明白如何在 n*lg(n/k) 中合并每个大小为 k 的 n/k 数组。我能想到的最佳解决方案是通过在每个子列表的 min 元素中搜索 min 元素来填充大小为 n 的最终数组的每个条目。这导致 O(nk)。在指定时间内完成的算法是什么?
最佳答案
我刚做了这道题,我觉得答案如下:子列表仍然一次合并两个。1)考虑合并每个“级别”需要多长时间。2) 考虑有多少合并操作(第一个列表下方的“级别”数量)。
合并每个级别需要多长时间?每个子列表有 k 个元素,因此有 (n/k) 个子列表。因此,元素总数为 k * (n/k) = n,因此每一层的合并操作为 theta(n)。
有多少个合并操作(级别)?
If there is 1 sorted sublist: 0
If there are 2 sorted sublists: 1
If there are 4 sorted sublists: 2
If there are 8 sorted sublists: 3
If there are 16 sorted sublists: 4
1 = 2^0
2 = 2^1
4 = 2^2
8 = 2^3
16 = 2^4
所以我们可以制定一个通用规则,格式与上面列出的具体规则相同:
If there are 2^p sorted sublists: p
当我们需要问这个问题时 “2 的‘什么?’的幂= m"
,那么我们需要一个对数。
所以,如果我们问 “2 的‘什么?’次方= 16?”
答案是 log to base 2 of 16 = lg 16 = 4
所以询问有多少级合并操作等同于询问“2 的‘什么’次方?” =米”。我们现在知道答案是 log to base 2 of n = lg m
。
所以我们现在知道有 lg m
级合并操作,每一级合并操作需要 n
时间。因此,总时间为 n * lg m = n lg m
请记住,m 是我们要合并的元素数量,在本例中,是算法的插入排序部分返回的已排序子列表的数量。这是 n/k
。因此,总时间为 n log (n/k)
。
关于algorithm - CLRS 算法 : Merge n/k sublists each of size k in O(n*lg(n/k)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276002/
谁能解释为什么 subList() 不像 subSet() 方法那样运行,并抛出 ConcurrentModificationException,而 子集 不是。这两种方法都创建了一个 Backed
是否有任何函数或方法可以在 python 2.7 中递归实现此目的? Input : ['and', ['or', 'P', '-R', 'P'], ['or', '-Q', '-R', 'P']]
让我们考虑一下:List ints = Arrays.asList("1","2","3","4","5","6")让 k=2 . 我们想返回以下列表 List : ["12", "23", "34
当我使用子列表时,我遇到了 ConcurrentModificationException 问题。 我的问题是:使用子列表创建新集合是否安全? 示例: List list = new LinkedLi
如果有重复,我深表歉意,但我进行了搜索,但找不到任何可以解决我当前问题的主题。 我想知道是否有某种Pythonic方法可以并行迭代两个(或更多)子列表。我已经很了解 zip 函数,因此我将在一个简短的
我已经定义了 ArrayList: ArrayList numbers = new ArrayList(); 我只想处理它的特定部分,所以我创建了子列表: List numbersh = number
public List> splitList( List values) { List> newList = new ArrayList>(); //Type mism
我有一个显示 Glassfish 日志文件列表的 JSF 页面。我使用延迟加载进行分页。我将日志文件名列表保存到 Java List. private List dataList = new Arra
是否有技巧或前奏函数来测试列表是否包含特定的子字符串/子列表? xyz :: [a] -> [a] -> Bool xyz "hello world" "worl" -> True xyz [1,2,
我在单元测试中遇到了这个问题。 执行后: List cleanCards = cards.subList(0, cards.size() - difference); 以下断言给了我一个 Concur
我需要实现一个在序列上滑动的滑动窗口。 (1:[0,1,2,3]2:[1,2,3,4],...)哪个批准可能更快?1. for each step i; {List=wholeList.sublist
因此我修改了 API(用于命令管理)以使用 String[] 而不是字符串列表。 我的问题在这里:strings.subList(1, strings.length)所以我需要将其更改为可以完成相同工
如果我有一个变量 LinkedList list 并重复执行以下操作以提取“列表”的尾部 // Some operation that adds elements to 'list' // max_s
我很想知道最新的 JVM 如何处理通过以下方法保留的垃圾回收内存。 public List getHallOfFame() { ArrayList listToSort = new ArrayLi
我有一个使用 JPA 保存的 java 对象。该对象有一个成员“friendsList”,它是一个字符串列表。我在这个对象上使用了@CollectionOfElements hibernate 注释。
我有一个长度为 x 值的列表。该列表被分解成不同长度的子列表。然后我将这些子列表写入输出文件。有没有办法打印没有括号的子列表。 编辑清楚: 实际 列表有 300 个子列表,其中包含 12250 个元素
Erlang 有没有办法在 ets 表上创建一个选择查询,它将获得 的所有元素包含 搜索到的文本? ets:select(Table, [{ %% Match spec for select qu
这是简化的代码 public Page getTestData(TestData testData, Pageable pageRequest) { List results = getSomethi
我是序言的新学习者。这是我们工作室的问题,我不知道从哪里开始。 真的很感激这方面的任何帮助。 子列表(Xs,Ys) 当 Xs 是一个包含 Ys 的某些元素的列表时,这适用于它们在列表 Ys 中出现的相
我目前正在开发我的第一个 Android 应用程序。它解析 JSON 数据并将其放入 ListView(见下文)。 protected void onPostExecute(String result
我是一名优秀的程序员,十分优秀!