Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 当键占用超过一个单词的内存时,mergesort/radix sort的复杂性是否会改变_Algorithm_Sorting_Language Agnostic_Time Complexity_Asymptotic Complexity - Fatal编程技术网

Algorithm 当键占用超过一个单词的内存时,mergesort/radix sort的复杂性是否会改变

Algorithm 当键占用超过一个单词的内存时,mergesort/radix sort的复杂性是否会改变,algorithm,sorting,language-agnostic,time-complexity,asymptotic-complexity,Algorithm,Sorting,Language Agnostic,Time Complexity,Asymptotic Complexity,这是一个家庭作业问题,所以我在寻找提示而不是解决办法。考虑一组n个数。每个数字都是“k”位数。假设“k”要大得多,并且不适合存储在单个单词中。在这种情况下,合并排序和基数排序的复杂性是什么 我的分析是-渐进复杂性不取决于底层架构细节,如一个数字占用的字数等。可能是常数因子变化,算法运行较慢,但总体复杂性保持不变。例如,在Python这样处理任意长整数的语言中,算法保持不变。但我的一些朋友认为,随着被数字“w”占据的单词数量朝着无穷大的方向增长,复杂性确实会发生变化 我走对了吗?算法的运行时间确实

这是一个家庭作业问题,所以我在寻找提示而不是解决办法。考虑一组n个数。每个数字都是“k”位数。假设“k”要大得多,并且不适合存储在单个单词中。在这种情况下,合并排序和基数排序的复杂性是什么

我的分析是-渐进复杂性不取决于底层架构细节,如一个数字占用的字数等。可能是常数因子变化,算法运行较慢,但总体复杂性保持不变。例如,在Python这样处理任意长整数的语言中,算法保持不变。但我的一些朋友认为,随着被数字“w”占据的单词数量朝着无穷大的方向增长,复杂性确实会发生变化


我走对了吗?

算法的运行时间确实取决于构成输入的机器字的数量。以整数乘法为例。计算机可以在时间O(1)中计算两个一个字的数字的乘积,但不能在时间O(1)中计算两个任意大小的数字的乘积,因为计算机必须将每个字作为计算的一部分加载到内存中

作为基数排序与合并排序的提示,mergesort算法在元素之间进行O(n logn)比较,但这些比较可能不需要每次O(1)的时间。比较两个需要k个机器字的数字需要多少时间?类似地,基数排序的运行时间取决于数字中的位数。如果每个数字中有k个机器字,则需要多少轮基数排序


希望这有帮助

你说得有点对。这就是为什么大多数复杂性分析会(在某个地方,至少是隐式地)指出它是在处理一些基本操作的计数,而不是实际时间。您通常会想当然地认为,这些基本操作(例如,比较、交换、加法或减法等数学运算)中的大多数(如果不是全部的话)都是固定时间,这让您几乎可以直接从操作计数(实际复杂度)转换为所消耗的时间


然而,为了完全准确,渐近复杂性通常是(应该)根据基本运算的计数来指定的,而不是实际消耗的时间。

您既不清楚地走对了路,也不清楚地走错了路。你需要回到整个复杂性的开头,在那里你会找到原因,这是因为基本机制的定义很模糊(以“假设…”开头的句子)。对于“w”字宽的整数,比较需要O(k)时间。因此总的时间复杂度变成O(wnlogn)?对于基数排序,复杂度取决于数字中的位数,而不是它所跨越的字数,那么它的复杂度在O(kn)时保持不变