[Homework: Arrays] 11. Binary search - 80/100


0

Някаква проверка липсва?

using System; class BinarySearch { static void Main() { int number = int.Parse(Console.ReadLine()); int[] myArray = new int[number]; for (int i = 0; i < number; i++) { myArray[i] = int.Parse(Console.ReadLine()); } int x = int.Parse(Console.ReadLine()); int minimum = 0; int maximum = number - 1; int middle = (minimum + maximum) / 2; while (myArray[middle] != x && minimum <= maximum) { middle = (minimum + maximum) / 2; if (myArray[middle] < x) { minimum = middle + 1; } else { maximum = middle - 1; } } Console.WriteLine(middle); } }




Отговори



0
Ако числото не се намира в числовата редица, трябва да върнеш на конзолата -1.

от Xenoleth (43 точки)


0

Здравей колега,

добави още един if в цикълa - ако minimum > maximum, middle = -1 и прекъсваш цикъла с break;


от AleksandarSB (50 точки)


0
Пробвах, не стана... Пак 80/100. Нещо се забатачих...

от SPENS03 (82 точки)

0

while (myArray[middle] != x && minimum <= maximum)

Промени го на

while (myArray[middle] != x)

И тогава добави if-а. Не видях в първия момент, че правиш проверка в параметрите на цикъла.


от AleksandarSB (50 точки)