二分查找:又称折半查找。
基本思想:前提条件是待查找集合有序,首先将待查值与中间元素比较,若相等,则找到;若小于中间元素,则后续查找在左半区间查找,否则在右半区间查找。
需要连续存储,时间复杂度是O(logn).
-
int binary_search(int a[], int size, int value)
-
{
-
int i, j, mid;
-
-
i = 0;
-
j = size;
-
-
while (i <= j){ /* take care i==j */
-
mid = (i+j) / 2;
-
if (value == a[mid]){
-
return mid; /* found */
-
}
-
if (value < a[mid]){ /* left */
-
j = mid - 1;
-
} else if (value > a[mid]){ /* right */
-
i = mid + 1;
-
}
-
}
-
return -1; /* not found */
-
}
阅读(1268) | 评论(0) | 转发(0) |