参考代码
#include<stdio.h>
void sortArray(int arr[], int n);
int search(int arr[], int low, int high, int key);
int Binary_search(int arr[], int low, int high, int key);
int main()
{
int i;
int array[] = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
sortArray(array, sizeof(array)/sizeof(array[0]));
if( search(array, 0, sizeof(array)/sizeof(array[0]) - 1, 7) == -1 ){
printf("Find Not!");
}else{
int mid = search(array, 0, sizeof(array)/sizeof(array[0]) - 1, 7);
printf("value being find out: %d", array[mid]);
}
return 0;
}
void sortArray(int arr[], int n){
int i, j;
for( i=1; i < n; i++ ){
for( j=i; j > 0; j-- ){
if( arr[j] < arr[j-1] ){
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
}
int search(int arr[], int low, int high, int key){
int mid = (low + high)/2;
while( arr[mid] != key && low <= high ) {
if( arr[mid] < key ){
low = mid + 1;
} else if ( arr[mid] > key ){
high = mid - 1;
}
mid = (low + high)/2;
}
if( low > high ){
return -1;
}
return mid;
}
int Binary_search(int arr[], int low, int high, int key){
if( low > high ){
return -1;
}
int mid = low + ( (high - low) >> 1 );
if( arr[mid] < key ){
Binary_search(arr, mid+1, high, key);
} else if ( arr[mid] > key ){
Binary_search(arr, low, mid-1, key);
} else {
return mid;
}
}