【发布时间】:2013-12-09 19:18:34
【问题描述】:
这是手头的问题:您有一组 N 个随机数要插入到排序列表中(从最小到最大)。 构建整个列表的最坏情况下的渐近时间性能是多少?
我知道如何在几种语言的代码中插入排序列表(我知道有几种不同的方法): 我让程序检查数组中是否还有空间容纳另一个项目。然后,为了将项目插入列表,列表中所有大于要插入的项目都将通过 for 循环向右移动。然后我将要插入的项的指针记录在适当的数组位置。 在 C++ 中:
void SortedListAsArray::Insert (Object& object)
{
if (count == array.Length ())
throw domain_error ("list is full");
unsigned int i = count;
while (i > 0 && *array [i - 1U] > object)
{
array[i] = array [i - 1U];
--i;
}
array[i] = &object;
++count;
}
我认为这是 O(n) 时间。让我感到困惑的是整个“构建”整个列表部分。我不确定这是否意味着根据这些数字从头开始构建一个列表并将它们插入然后排序,或者只是将一组数字插入到已经排序的列表中。你们认为这意味着什么,它会改变我的运行时间吗?谢谢!
【问题讨论】:
标签: list sorting insert asymptotic-complexity