Бинарный (двоичный) поиск находит не все значения - C#
Формулировка задачи:
Дан массив ( неотсортированный) необходимо используя двоичный поиск найти все элементы массива, которые равны заданному
вот накидал
не ищет не все значения(
private static void binarySearch(int[] array, int x)
{
Array.Sort(array);
int l = 0, r = array.Length;
while (r - l > 1)
{
int mid = (l + r)/2; // делим отрезок [l, r] -попала
if (array[mid] < x)
{ l = mid; }
else
{ r = mid; }
}
for (int i = l; i <= r; i++)
{
if (array[i] == x)
{
Console.WriteLine("Искомый элемент {0} находится на позиции - {1}", x, i + 1);
}
}
Console.ReadKey();
}Решение задачи: «Бинарный (двоичный) поиск находит не все значения»
textual
Листинг программы
if (val < arr[mid]) right = mid; else if (val > arr[mid]) left = mid + 1; else return mid