黑马程序员技术交流社区

标题: 折半查找代 [打印本页]

作者: 董立正    时间: 2015-12-5 10:43
标题: 折半查找代
#include <stdio.h>
/**
*  使用折半查找,查找一个数的位置
*
*  @param arr 数组
*  @param len 数组的长度
*  @param key 要查找的数
*
*  @return 要查找的数的位置,如果查找不到返回 -1
*/
int searchItem(int arr[],int len,int key){
    int low = 0,high = len,mid = 0;
    while (low <= high) {
        mid = (low + high) / 2;
        if (key > arr[mid]) {
            low = mid+1;
        }else if (key < arr[mid]){
            high = mid -1;
        }else{
            return mid;
        }
    }
    return -1;
}

int insertItemLoc(int arr[],int len,int key){
    int low = 0,high = len,mid = 0;
    while (low <= high) {
        mid = (low + high) / 2;
        if (key > arr[mid]) {
            low = mid+1;
        }else if (key < arr[mid]){
            high = mid -1;
        }else{
            return mid + 1;
        }
    }
    return low;
}
int main(int argc, const char * argv[]) {
    int a[] = {3,4,12,20,21,23,28,45,67,100};
    int loc = insertItemLoc(a, 10, 18);
    printf("loc = %d\n",loc);
//    int loc = searchItem(a, 10, 20);
//    printf("loc = %d\n",loc);
    return 0;
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2