binarySearch 2ºÐ Ž»ö
int binarySearch(DATA *data, int nmem, int target);
typedef struct { int key; /* ºñ±³ÀÇ Å°°¡ µÇ´Â Çʵå */ int info; /* ±× ¿ÜÀÇ Çʵå */ } DATA; data (ÀÔ·Â) µ¥ÀÌÅÍ ·¹ÄÚµåÀÇ ¹è¿ nmem (ÀÔ·Â) ·¹ÄÚµå ¹è¿ÀÇ Å©±â target (ÀÔ·Â) Ž»ö ¸ñÇ¥·Î ÇÏ´Â Å°ÀÇ °ª
¹ß°ßµÇ¾úÀ» °æ¿ì´Â ¹è¿ÀÇ ¿ä¼Ò ¹øÈ£(¹è¿ÀÇ ¼±µÎ ¿ä¼ÒÀÇ ¹øÈ£´Â 0). ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì´Â -1.
int binarySearch(DATA *data, int nmem, int target){ int left, right, middle; left = 0; right = nmem - 1; while (left < right) { middle = (left + right) / 2; if ((data + middle)->key < target) left = middle + 1; else right = middle; } if ((data + left)->key == target) return left; return -1; }
1ȸÀÇ ºñ±³·Î Ž»öÇØ¾ß ÇÒ ¹üÀ§´Â ¹ÝÀÌ µÇ¹Ç·Î, Ž»ö ¼º°ø ȤÀº ½ÇÆÐÀÇ ¾î´À ÂÊÀÇ °æ¿ì¿¡¼µµ, °è»ê·®Àº O(log n)ÀÌ´Ù.
µ¥ÀÌÅÍ°¡ ³»¸²Â÷¼øÀ¸·Î ¼ÒÆ® µÇ°í ÀÖ´Â °æ¿ì´Â, ºÎµîÈ£ÀÇ ¹æÇâÀ» º¯Çϸé ÁÁ´Ù.