A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董立正 中级黑马   /  2015-12-5 10:43  /  578 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#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;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马