středa 7. června 2006

Programátorská hádanka

Mám tady jednu progrmátorskou hádanku, která je velice zajímavá. Takže kdo dokáže najít chybu v následujícím jednoduchém kódu, který realizuje hledání půlením intervalů (pole je setřízené).

01 public static int binarySearch(int[] a, int key) {
02         int low = 0;
03         int high = a.length - 1;
04 
05         while (low <= high) {
06             int mid = (low + high2;
07             int midVal = a[mid];
08 
09             if (midVal < key)
10                  low = mid + 1;
11             else if (midVal > key)
12                  high = mid - 1;
13             else
14                  return mid; // key found
15         }
16         return -(low + 1);  // key not found.
17 }
Java2html

Přiznám se bez mučení, ja jsem na to nepřišel, není to tak jednoduché. Kdokoliv na to přijde má můj veškerý obdiv! Jenom dodám, že tenhle kód byl léta součásti API Javy...