2012-07-29 72 views
0

嗨堆棧溢出用戶,選擇排序數組比較

我想了解如何計算一個方法內發生多少個數組比較。 arrayMaxPos函數使用n-1比較來查找大小爲n的數組中的最大元素。

我只是想找到我的頭。

public static void SelectSort(int [] a, int n) 
    { 
    for (int i = n; i> 1; i--) 
    { 
     int maxPos = arrayMaxPos(a, i); 
     swop(a, maxPos, i-1); 
    } 
    } 

非常感謝。

+0

由你檢查你的方式 - 沒有這種方法實際工程數組排序 - 烏爾從我運行一個循環= n到i> 1。 – exexzian 2012-07-29 23:14:38

回答

0

我認爲這將是((N-1)^ 2)/ 2的比較。

0

您可以通過調試代碼或簡單地將打印語句放在其中來分析自己的代碼。 和您的答案 - 選擇排序採取n(n - 1)/ 2排序陣列

+0

啊,謝謝,如果我只提供了代碼,並沒有訪問權限可以調試它。有沒有一種方法可以通過使用我的頭來解決問題? – user1028145 2012-07-29 21:28:23

+0

@ user1028145:維基百科頁面上的[此部分](http://en.wikipedia.org/wiki/Selection_sort#Analysis)可能會有所幫助。 – Blastfurnace 2012-07-29 21:30:40

+0

@ user1028145你的意思是沒有任何訪問權限能夠調試它?如果你不能使用任何IDE進行調試,然後手動分析它。 – exexzian 2012-07-29 21:48:55

0

您的外循環正在進行n-1次迭代。 你的內部循環(arrayMaxPos(...))從n到1,因此n/2。

所以一些其他的答案已經說明:N(N-1)/ 2