【发布时间】:2018-06-14 15:08:57
【问题描述】:
我正在尝试学习 Big(O) 符号。在网上搜索一些文章时,我遇到了两篇不同的文章,A 和 B
严格来说,就循环而言 - 似乎它们几乎具有相同的流。 例如
[A]的代码如下(在JS中完成)
function allPairs(arr) {
var pairs = [];
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
pairs.push([arr[i], arr[j]]);
}
}
return pairs;
}
[B] 的代码如下(用 C 完成)- 整个代码是here
for(int i = 0; i < n-1 ; i++) {
char min = A[i]; // minimal element seen so far
int min_pos = i; // memorize its position
// search for min starting from position i+1
for(int j = i + 1; j < n; j++)
if(A[j] < min) {
min = A[j];
min_pos = j;
}
// swap elements at positions i and min_pos
A[min_pos] = A[i];
A[i] = min;
}
站点 A 上的文章提到时间复杂度是 O(n^2),而站点 B 上的文章提到时间复杂度是 O(1/2·n2)。
哪个是对的?
谢谢
【问题讨论】: