[英]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.