Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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

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 一种确定性选择算法的时间复杂度_Algorithm_Sorting_Big O - Fatal编程技术网

Algorithm 一种确定性选择算法的时间复杂度

Algorithm 一种确定性选择算法的时间复杂度,algorithm,sorting,big-o,Algorithm,Sorting,Big O,我最近看了一段视频,讲的是如何让一个选择算法在O(n)时间内运行,我对这个算法制作过程中的一个步骤感到困惑 视频中说,我们应该将一组数字或数组划分为n/5组,每组5个元素,其余元素在另一组中。然后我们找到每组的中位数。然后我们找到中间点的中间值,并将其用作轴心,依此类推 然而,要找到每组的中位数,我们必须首先对各组进行排序。视频说使用插入排序或合并排序,但这些算法不是O(nlogn)吗?那么,如果排序已经需要O(nlogn),那么总体运行时间怎么可能是O(n) 以下是供参考的视频:编辑前我错了

我最近看了一段视频,讲的是如何让一个选择算法在O(n)时间内运行,我对这个算法制作过程中的一个步骤感到困惑

视频中说,我们应该将一组数字或数组划分为n/5组,每组5个元素,其余元素在另一组中。然后我们找到每组的中位数。然后我们找到中间点的中间值,并将其用作轴心,依此类推

然而,要找到每组的中位数,我们必须首先对各组进行排序。视频说使用插入排序或合并排序,但这些算法不是O(nlogn)吗?那么,如果排序已经需要O(nlogn),那么总体运行时间怎么可能是O(n)


以下是供参考的视频:

编辑前我错了

我读了n/5个元素的集合,而不是n/5个5个元素的集合


对5个或更少元素的N/5组进行排序是
O(N/5*5*log(5))
,这在复杂度时间上是线性的。

编辑前我错了

我读了n/5个元素的集合,而不是n/5个5个元素的集合

对5个或更少元素的N/5组进行排序是
O(N/5*5*log(5))
,这在复杂度时间上是线性的

将一组数字或数组分成5个元素的n/5组,并将。。。。然后我们找到每组的中位数。。。然而,要找到每组的中位数,我们必须首先对各组进行排序。视频说使用插入排序或合并排序,但这些算法不是O(nlogn)吗?那么,如果排序已经需要O(nlogn),那么总体运行时间怎么可能是O(n)

不完全正确。因为对一组5人进行排序只需
5log(5)
,我们在
n\5
时间内完成了排序。这将是
n*5/5log(5)=nlog(5)
。这仍然是线性的

将一组数字或数组分成5个元素的n/5组,并将。。。。然后我们找到每组的中位数。。。然而,要找到每组的中位数,我们必须首先对各组进行排序。视频说使用插入排序或合并排序,但这些算法不是O(nlogn)吗?那么,如果排序已经需要O(nlogn),那么总体运行时间怎么可能是O(n)


不完全正确。因为对一组5人进行排序只需
5log(5)
,我们在
n\5
时间内完成了排序。这将是
n*5/5log(5)=nlog(5)
。这仍然是线性的。

我想我在这里遗漏了一些东西,在我的讲演幻灯片中,它说运行时间也是O(n)..我误解了你所说的,编辑了答案,但invisal是对的。我想我在这里遗漏了一些东西,在我的讲演幻灯片中,它说运行时间也是O(n)..我误解了你所说的,编辑了答案,但invisal是对的。