Я пишу программу, которая должна найти наименьшее число в турнирной скобке. Например, есть массивПоиск наименьшего числа с помощью турнирной скобки
int[] a = new int[4] {4, 2, 1, 3}
и сравнивающих чисел, стоящих рядом друг с другом Я выбрать самые маленькие. (min(4, 2) -> 2
, min(1, 3) -> 1
, а затем я сравниваю 1 и 2, 1 является самым маленьким, так что это победитель, но сравнивать 2 и 1. невозможно. Только 0 [0] с 1, [2] с [ 3] и т. Д. В общем случае a [2 * i] с [(2 * i) +1] - что-то вроде этого
Первый вопрос: если есть n чисел, все дерево состоит из 2n- 1. Я должен создать массив из 4 или 7 элементов? 4 кажется лучшим вариантом.
Второй вопрос: если я сравниваю 4 и 2, а 2 меньше, я должен сделать [0] = 2, а затем при сравнении 1 и 3 a 1 = 1. Наконец, сравнивая [0] с 1 и помещая smal чтобы номер не был [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;
}
Можете ли вы указать, что я делаю хорошо, и что должно быть улучшено?
Можете ли вы t ell нас, что вам нужно делать с цифрами? Вы хотите создать новый список чисел из предыдущего раунда турнира? Как заключаются скобки 2n-1, когда имеется n чисел? –
Мне просто нужно найти самый маленький. Я говорил о 2n-1 «пространствах» во всем дереве, как вы можете видеть здесь: http://f.cl.ly/items/463s1h060m3T3b3c2h3l/Zrzut%20ekranu%202015-10-18%2001.50.32.png Итак, у нас есть 4 числа, но все дерево состоит из 2n-1. – codddeer123
Вы, кажется, в целом на твердой дорожке. Попробуйте что-нибудь, посмотрите, как это работает, разместите свой код, и мы сможем помочь вам двигаться вперед. –