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