A3-二分查找算法
1 #include <stdio.h> 2 3 int binarySearch(int *array, int length, int num); 4 int main(int argc, const char * argv[]) { 5 6 int array[] = {1, 2, 3, 4, 5}; 7 8 int length = sizeof (array) / sizeof(int); 9 10 int a = binarySearch(array, length, 4); 11 12 printf("%d\n",a); 13 14 return 0; 15 } 16 17 int binarySearch(int *array, int length, int num) 18 { 19 int low = 0; 20 int high = length - 1; 21 while (low <= high) 22 { 23 int middle = (low + high) / 2; 24 25 if (array[middle] == num) 26 { 27 return middle; 28 } 29 else if(array[middle] > num) 30 high = middle - 1; 31 else 32 low = middle + 1; 33 } 34 return 0; 35 }
二分查找算法就是不断将数组进行对半分割,每次拿中间元素和要查找的元素进行比较;总数是偶数时,中间元素就是靠前的一个。比较之后,根据结果确定要查找的元素在前半部分还是后半部分。然后继续循环比较。