- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
MergeSort is a divide-and-conquer algorithm that divides the input into several parts and solves the parts recursively.
...There are several approaches for the split function. One way is to split down the middle. That approach has some nice properties, however, we'll focus on a method that's a little bit faster: even-odd split. The idea is to put every even-position element in one list, and every odd-position in another.
这直接来 self 的讲义。为什么奇偶拆分比数组中间的拆分更快?
我推测它与传递到 MergeSort 的列表有关并且具有已经排序的质量,但我不完全确定。
任何人都可以阐明这一点吗?
编辑:我尝试在 Python 中运行以下命令...
global K
K = []
for i in range (1, 100000):
K.append(i)
def testMergeSort():
"""
testMergeSort shows the proper functionality for the
Merge Sort Algorithm implemented above.
"""
t = Timer("mergeSort([K])", "from __main__ import *")
print(t.timeit(1000000))
p = Timer("mergeSort2([K])", "from __main__ import *")
print(p.timeit(1000000))
(MergeSort为奇偶MergeSort,MergeSort2向下划分中心)
结果是:
0.771506746608
0.843161219237
最佳答案
我可以看到它可能会更好,因为将它与替代元素分开意味着您不必知道输入从多长时间开始 - 您只需获取元素并将它们放在交替列表中,直到您用完了。
如果您小心允许更好的并行处理,您也可能在完成对第一个列表的迭代之前开始拆分结果列表。
我应该补充一点,我不是这些问题的专家,它们只是想到的事情......
关于algorithm - 为什么 MergeSort 的奇偶拆分为 'faster'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6124596/
http://opencv-code.com/quick-tips/implementation-of-guo-hall-thinning-algorithm/ 在看郭霍尔算法,但我不明白它说的那部分
我知道这个方法检查整数是否为偶数,但是具体如何检查呢?我理解斐波那契或阶乘等例子的递归是如何工作的,但不理解这个。我认为由于语法原因我不明白。 // Assume n >= 0 public stat
我被困在一个作业上,需要程序接受多个数字,然后如果是奇数则输出"is",如果是偶数则输出“否”,并且不知道如何让程序接受超过 1 个 int,然后输出正确的 println。这是我到目前为止的代码。
这个测试行得通吗?: if (testInt/2).ofType(Integer){ //to-do if even } 我假设它会 iff 编译器在 ofType() 之前解析 testIn
我正在尝试更好地排列图像,而不仅仅是 1 列中的图像。示例见附件,每篇文章的图片可以在左右。 这是我的代码。HTML: Content 1
DAY16共3题: 奇♂妙拆分(简单数学) 区区区间间间(单调栈) 小AA的数列(位运算dp) 🎈 作者:Eriktse 🎈 简介:19
我是一名优秀的程序员,十分优秀!