折半查找必須在有序數組中使用;(大小順序)
代碼:
#include <stdio.h>
#include <stdlib.h>
int Two_Searching(int arr[], int x, int y){
int left = 0;
int right = y ;
int mid = 0;
while (left <= right){
mid = left + ((right - left) >> 1);
if ( arr[mid] < x){
left = mid + 1;
}
else if (arr[mid] > x){
right = mid - 1;
}
else{
break;
}
}
if (left > right)
{
return -1;
}
else{
return mid;
}
}
int main(){
int arr[] = { 1, 2, 3, 4, 5, 6, 7 };
int len = sizeof(arr) / sizeof(arr[0])-1;
int key = 0;
scanf("%d", &key);
int rec = 0;
rec=Two_Searching(arr, key, len);
if (rec == -1){
printf("找不到該數\n");
}
else{
printf("找到了下標爲%d\n", rec);
}
system("pause");
return 0;
}