[room] on binary search and merge-sort algos

Denis Kirienko =?iso-8859-1?q?dk_=CE=C1_altlinux=2Eru?=
Пн Авг 20 12:49:54 MSD 2007


Damir Shayhutdinov пишет:

> Если вы условие выхода из цикла не считаете за "деление массива",
> тогда третью часть можно вынести в это условие цикла.
> 
> unsigned low = 0;
> unsigned mid = 0;
> unsigned high = a.length - 1;
> 
> while (low <= high && a[mid] != key)
> {
>    mid = (low + high)  / 2;
>    if (a[mid] < key)
>       low = mid + 1;
>    else
>       high = mid - 1;
> }
> if (a[mid] == key) return mid;
> return -(low + 1);

То, что вы предлагаете - это тот же тернарный поиск, только проверка еще
одного условия вынесена в условие цикла.

--
Денис




Подробная информация о списке рассылки smoke-room