插入排序时间复杂度
Insertion sort time complexity
用于对数组进行排序的插入排序的不寻常的 Θ(n2) 实现使用线性搜索来识别要将元素插入到数组的已排序部分中的位置。如果那么,相反,我们使用二分查找来确定位置,最坏的情况 运行 时间将是
A) 保持 Θ(n2)
B) 变为 Θ(n(logn)2)
C) 变为 Θ(nlogn)
D)变成Θ(n)
这是我关于Whosebug的第一个问题,如有错误请见谅。
首先问题是关于插入排序而不是上面显示的快速排序。
正确答案是 A-Remain Θ(n^2) 因为即使你可以二进制搜索元素在数组的已排序部分中的位置,你也必须将每个大于它的元素移动一个位置如果原始数组的元素顺序是从大到小,则导致 Θ(k) 移动量的右边,其中 k 是要添加到已排序部分的元素的初始索引。当你做数学时,总 运行 时间是 Θ(n^2)。
抛开题干:Randomized-QuickSort的时间复杂度平均情况是O(nlogn),如果你有期望值(概率)方面的数学背景就可以证明。您可以阅读算法简介 (Cormen) 一书中的快速排序部分找到更多相关信息。
用于对数组进行排序的插入排序的不寻常的 Θ(n2) 实现使用线性搜索来识别要将元素插入到数组的已排序部分中的位置。如果那么,相反,我们使用二分查找来确定位置,最坏的情况 运行 时间将是
A) 保持 Θ(n2)
B) 变为 Θ(n(logn)2)
C) 变为 Θ(nlogn)
D)变成Θ(n)
这是我关于Whosebug的第一个问题,如有错误请见谅。
首先问题是关于插入排序而不是上面显示的快速排序。
正确答案是 A-Remain Θ(n^2) 因为即使你可以二进制搜索元素在数组的已排序部分中的位置,你也必须将每个大于它的元素移动一个位置如果原始数组的元素顺序是从大到小,则导致 Θ(k) 移动量的右边,其中 k 是要添加到已排序部分的元素的初始索引。当你做数学时,总 运行 时间是 Θ(n^2)。
抛开题干:Randomized-QuickSort的时间复杂度平均情况是O(nlogn),如果你有期望值(概率)方面的数学背景就可以证明。您可以阅读算法简介 (Cormen) 一书中的快速排序部分找到更多相关信息。