二分查找就是折半查找,主要思想:
将要查找的数与表的中间的元素进行比较,若该数与中间值相等那么查找成功;如果该数大于中间的数,那么这个数一定在右子表中,继续对右子表进行折半查找;若该数比中间值小,那么这个数一定在左子表中,继续对左子表进行差找。知道查找成功或查找失败。
二分查找的函数代码如下:
void binary_search(int arr[], int size, int key)
{ int low, high, mid,count=0,count1=0; low = 0; high = size - 1; while (low <= high) { count++;//record for number; mid = (low + high) / 2; if (key > arr[mid]) { low = mid + 1;}
else if (key < arr[mid]) { high = mid - 1; } else if (key == arr[mid]) { count1++; printf("success!\nsearch %d times!arr[%d]=%d", count, mid, key); break; } } if (count1 == 0) printf("no found!");}主函数代码如下:
int main()
{ int arr[100],key ,n, i; printf("please input the length of array:\n"); scanf("%d", &n); printf("please input element:\n"); for (i = 0; i < n;i++) scanf("%d", &arr[i]); printf("please input the number which do you want to search:\n"); scanf("%d", &key); binary_search(arr, n, key); printf("\n"); system("pause"); return 0;}