参考代码
#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;
}
}