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
Sorting 两个数组排序的时间复杂度_Sorting_Language Agnostic_Time Complexity_Big O_Computer Science - Fatal编程技术网

Sorting 两个数组排序的时间复杂度

Sorting 两个数组排序的时间复杂度,sorting,language-agnostic,time-complexity,big-o,computer-science,Sorting,Language Agnostic,Time Complexity,Big O,Computer Science,如果我有两个大小不同的未排序数组,并且我想对它们都进行排序,那么运行时的复杂性将是O(n log(n)),但是n代表什么?较大或较小的数组?在O表示法中,变量n表示问题的“大小”。例如,如果您有一个包含10个元素的列表,并希望对其进行排序,则问题的大小为10。对于两个数组,我们有两个问题大小,n和m。因此复杂性为O(nlog(n))+O(mlog(m)),与O(nlog(n)+mlog(m))相同。n表示较大数组的大小。 首先,回想一下Big-O的含义:函数k是O(n log(n))当且仅当存在

如果我有两个大小不同的未排序数组,并且我想对它们都进行排序,那么运行时的复杂性将是O(n log(n)),但是n代表什么?较大或较小的数组?

在O表示法中,变量n表示问题的“大小”。例如,如果您有一个包含10个元素的列表,并希望对其进行排序,则问题的大小为10。对于两个数组,我们有两个问题大小,n和m。因此复杂性为O(nlog(n))+O(mlog(m)),与O(nlog(n)+mlog(m))相同。

n表示较大数组的大小。

首先,回想一下Big-O的含义:函数k是O(n log(n))当且仅当存在某个常数M,使得k(n) 现在,在这种情况下,函数k是什么?它是对两个数组进行排序的程序的运行时。以这种方式重新表述上述对Big-O的定义,我们可以看到“时间复杂度是O(n log(n))”这句话相当于这个句子

“运行时给定的大小n不超过(n log n)的常数倍数。”

因此,我们试图根据n来限制运行时的大小。什么是n

嗯,n不能是较小数组的大小,因为较小数组的大小不会对较大数组的大小设置上限,而运行时取决于较大数组的大小。也就是说,即使我们知道较小数组的大小很小(例如,1个元素),这也不会阻止较大数组的大小变大(例如,995566214678个元素),因此,仅较小的数组大小不能对总运行时间设置上限

现在,如果我们将n设为更大数组的大小,这能解决我们的问题吗

总之,是的


这是因为较小数组的大小小于较大数组的大小,因此较大数组的大小确实会限制较小数组的大小,因此它也会限制总运行时间。

较大数组,因为它支配总运行时间。它可以是较大数组,也可以是长度之和;两者都是这也是描述复杂性的一个很好的方法。你可能想看看有类似问题相关细节的帖子。