在 JavaScript 中使用数组时确定效率(大 O 表示法)
Determining efficiency (Big O Notation) while using arrays in JavaScript
我正在努力思考大 O 符号,并在网上看到以下问题。我必须回答确定以下代码是否为 O(n), O(n²), O(logn), O(nlogn)
我看了几个视频,但仍然无法理解 Big O。有人可以告诉我答案及其实现方法吗?
function sortSmallestToLargest(entries):
sorted_entries = {};
while entries is not empty:
smallest_entry = entries[0]
foreach entry in entries:
if (entry < smallest_entry):
smallest_entry = entry
sorted_entries.add(smallest_entry)
entries.remove(smallest_entry)
return sorted_entries
算法在 'entries' 上迭代多次,直到它变空。第一次在内循环中迭代 n 次(假设条目长度在开始时为 n)。第二次在内循环中迭代 n-1 次(因为在上一次迭代中删除了一个项目)。所以最后我们有这一系列的迭代:
n + (n-1) + (n-2) + ... + 1 = n(n+1)/2 = O(n^2)
我正在努力思考大 O 符号,并在网上看到以下问题。我必须回答确定以下代码是否为 O(n), O(n²), O(logn), O(nlogn)
我看了几个视频,但仍然无法理解 Big O。有人可以告诉我答案及其实现方法吗?
function sortSmallestToLargest(entries):
sorted_entries = {};
while entries is not empty:
smallest_entry = entries[0]
foreach entry in entries:
if (entry < smallest_entry):
smallest_entry = entry
sorted_entries.add(smallest_entry)
entries.remove(smallest_entry)
return sorted_entries
算法在 'entries' 上迭代多次,直到它变空。第一次在内循环中迭代 n 次(假设条目长度在开始时为 n)。第二次在内循环中迭代 n-1 次(因为在上一次迭代中删除了一个项目)。所以最后我们有这一系列的迭代:
n + (n-1) + (n-2) + ... + 1 = n(n+1)/2 = O(n^2)