2013-03-14 14 views
5

Дается массив из n чисел, где n - четное число. Необходимо определить максимум, а также минимум этих n чисел. Мне нужно знать, какие сравнения необходимы?Максимальные и минимальные значения массива

+0

Подсказка: 3 * п/2-2 сравнения являются достаточно , – Henrik

+0

@Henrik Вы можете прокомментировать – user2170497

ответ

3

Это можно сделать в O (n) времени.

Вы можете проверить это link для справки

+0

Вы шутите правильно? Используя наивный подход, это можно сделать в O (N) –

+0

@IvayloStrandjev: - Пожалуйста, исправьте меня, если я ошибаюсь, но я считаю его двумерным массивом. Возможно ли это и в 2D-массиве, а также в O (n) времени? –

+0

'Дается массив из n чисел, где n - четное число. Необходимо определить максимум, а также минимум этих n чисел. «Я не вижу здесь упоминания о 2D. OP запрашивает способ найти минимальное и максимальное количество из n чисел, используя минимальное количество сравнений. –

4

Это может быть сделано с помощью 3*n/2-2 сравнений.

Для n == 2 просто сравните два числа. Теперь предположим, что у нас есть минимум и максимум для первых чисел n-2. Сравните оставшиеся два числа, затем сравните большую с предыдущим максимумом и меньшим, чем предыдущий минимум.

1

Для несортированного массива это можно сделать примерно в 1.5n сравнениях. Вы можете сделать это, сравнивая пары элементов массива и сохраняя min и локальные max. Вы сделали n/2 сравнения, чтобы найти (местные) макс и n/2, чтобы найти мин. Таким образом, в этой фазе n.

Теперь вы переходите к местным макс и мин и находите глобальные максимальные и минимальные значения. Это также приведет к сравнениям n/2. Таким образом, n + n/2 = 1.5n.

Если массив сортируется вы можете найти его без каких-либо сравнений, так как наименьшее число находится в положении 0 и самой высокой на позиции N - 1.

Смежные вопросы