我正在編寫一個程序,必須通過錦標賽括號查找最小數字。例如,有一個陣列使用錦標賽括號查找最小數字
int[] a = new int[4] {4, 2, 1, 3}
並通過比較彼此相鄰的數字我必須選擇最小的一個。 (min(4, 2) -> 2
,min(1, 3) -> 1
,然後我比較1和2,1是最小的,所以它是勝利者,但不可能比較2和1.只有[0]帶有1,[2]帶有[ 3]等。一般情況下,[2 * i]帶有[(2 * i)+1] for(int i=0; i<a.Length/2; i++)
< - 像這樣的東西
第一個問題:如果有n個數字,則整棵樹由2n-第一個括號,我應該創建一個4或7個元素的數組嗎?4看起來是一個更好的選擇
第二個問題:如果我比較4和2,而2更小我應該做一個[0] = 2,然後在比較1和3時1 = 1?最後將[0]與1比較,最少數量爲[0]?可能需要臨時int。
最後一個問題:你打算以最簡單的方式做什麼?我幾乎找不到有關此算法的任何信息。我希望你能將我的思想引入工作算法。
並不多,但我張貼我的代碼:
int[] a = new int[4] { 4, 2, 1, 3 };
int tmp = 0;
for (int i = 0; i < (a.Length)/2; i++)
{
if (a[tmp] > a[tmp + 1])
{
a[i] = a[i + 1];
}
else if(a[tmp] < a[tmp +1])
{
a[i] = a[i + 1];
}
tmp = tmp + 2;
}
你能指出我在做什麼好,什麼應該改進?
你可以嗎請問我們需要怎樣處理這些數字?你想從上一輪比賽中產生一個新的數字列表嗎?有n個數字時,如何有2n-1個括號? –
我只需要找到最小的一個。我在整個樹上正在談論2n-1「空格」,你可以在這裏看到:http://f.cl.ly/items/463s1h060m3T3b3c2h3l/Zrzut%20ekranu%202015-10-18%2001.50.32.png 所以一開始我們有4個數字,但整棵樹由2n-1組成。 – codddeer123
你似乎一般都在堅實的軌道上。嘗試一下,看看它是如何工作的,發佈你的代碼,我們可以幫助你前進。 –