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)ÀÌ´Ù.
µ¥ÀÌÅͰ¡ ³»¸²Â÷¼øÀ¸·Î ¼ÒÆ® µÇ°í ÀÖ´Â °æ¿ì´Â, ºÎµîÈ£ÀÇ ¹æÇâÀ» º¯Çϸé ÁÁ´Ù.