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