|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.06.2012, 16:20 | #1 |
Пользователь
Регистрация: 30.04.2012
Сообщений: 52
|
Центральный элемент массива
Разбираюсь в "быстром поиске", наткнулся на интересный метод нахождения центрального элемента массива, кто может объяснить суть этой строки int p=ar[size-1>>1]; ? Код тестовый для интересующего меня вопроса, это не быстрый поиск=)
Код:
При любом расчете, число, правильность которого для всех очевидна, становится источником ошибок.
|
23.06.2012, 16:54 | #2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,311
|
Код:
Переменной p присваивается значение найденного элемента. Вычитание единицы связано с тем, что нумерация элементов массива ведется с нуля. Проверьте для вашего случая Как-то так получается ...
Как-то так, ...
|
23.06.2012, 17:04 | #3 |
Пользователь
Регистрация: 30.04.2012
Сообщений: 52
|
Я пока не силен в битовых операциях) ">>1" тоже что "/2" Ясно, Спс.
При любом расчете, число, правильность которого для всех очевидна, становится источником ошибок.
|
23.06.2012, 17:15 | #4 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,311
|
И да, и нет.
Если сдвигаемое число положительное, то да, так и есть, а вот если оно отрицательное ... Вот тут лучше почитать о представлении чисел в ЭВМ. Там старший бит отрицательного числа равен 1 и этот бит, при сдвиге вправо, размножается. Т.к. в нашем примере размер массива - число положительное, то да. Сдвиг вправо - деление на 2. В общем случае это не так. Внимательность и еще раз внимательность ... (Вот бы еще самому следовать этому совету )
Как-то так, ...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как заменить элемент элемент одномерного массива? Паскаль | Женька Good | Помощь студентам | 5 | 21.12.2011 00:07 |
Одномерный массив. Необходимо заменить последний положительный элемент на второй элемент массива | кумитэ | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 19.12.2011 16:44 |
Центральный угол! Не понятно условие! | Hacker19_90 | Помощь студентам | 1 | 16.05.2011 19:54 |
Удалить элемент массива | pavel42 | Помощь студентам | 14 | 21.05.2009 08:52 |
Максимальный элемент массива | j_Q | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 04.11.2008 22:48 |