簡體   English   中英

這個算法的效率是多少?

[英]what is the efficiency of this algorithm

以下算法的大O值是多少? 為什么這么值?

algorithm A (val array <ptr to int>)
     1 n = 0
     2 loop ( n < array size ) 
    1 min = n;
    2 m = n;
    3 loop ( m < array size)
      1 if (array[m] < array[min])
            1  min = m;
    4 swap(array[min],array[n]);
     3 n = n + 1

我回答了O(n ^ 2)我是否正確? 至於我如何得出這個結論,內部循環執行n次,其中n =數組大小,外部循環執行n次,其中n是數組大小n * n = n ^ 2

這就是所謂的選擇排序 ,實際上它具有O(n 2 )復雜度。

是! 你是對的!

這是選擇排序算法。 它的Θ(n ^ 2)更精確。

編輯:為什么這個值?

你拿第一個元素。 將它與所有其他元素進行比較,以便在數組中找到最小值並將其置於首位。 迭代:n。 你拿第二個元素。 將它與數組的其余部分進行比較,找到該部分的最小值(整個數組中的第二個最小值)並將其放在第二位。 迭代次數:n-1。 以這種方式繼續最后一個元素,迭代:1。

總= n + n-1 + ... + 1 = n(n + 1)/ 2。 那是O(n ^ 2)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM