基本问题:使用二分查找的方式,对数组内的值进行匹配,如果成功,返回其下标,否则返回 -1.
代码如下:
#include <stdio.h> int binsearch(int arr[], int len, int src) { int idx = 0,l = 0, r = len-1; idx = (l + r)/2; while(src != arr[idx]) { if(src < arr[idx]) { r = idx - 1; } else { l = idx + 1; } if(l > r) { idx = -1; break; } idx = (l + r)/2; } return idx; } int main() { int arrar[12] = {1,3,4,6,7,8,9,20,100,101,200}; int len = 11; int src; int result; scanf("%d", &src); result = binsearch(arrar, len, src); printf("Result : %d\n", result); return 0; }
因为对算法这方面刚刚开始入门,欢迎拍砖。