在 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)