K&R C Exercise 3-1 Solution

来源:互联网 发布:cad for mac打不开 编辑:程序博客网 时间:2024/05/01 04:27
/* * Exercise 3-1 Write the binary search algorithm with only * one test inside the loop. *  * Written by fduan on Dec. 15, 2011. */#include <stdio.h>/* binary search: v[0] <= v[1] <= ... <= v[n-1] */int bin_search( int x, int v[], int n ){int low, high, mid, pos;pos = -1;low = 0;high = n - 1;while( low <= high ){mid = ( low + high ) / 2;if( v[mid] == x ){pos = mid;break;}else if( v[mid] < x )low = mid + 1;elsehigh = mid - 1;}return pos;}int bin_search_new( int x, int v[], int n ){int low, high, mid;mid = ( low + high ) / 2;while( low <= high && v[mid] != x ){if( v[mid] < x )low = mid + 1;elsehigh = mid - 1;mid = ( low + high ) / 2;}return ( v[mid] == x ) ? mid : -1;}int main(){int v[] = { 1, 3, 5, 7, 9 };int x = 3;printf( "%d, %d\n", bin_search( x, v, 5 ), bin_search_new( x, v, 5 ) );return 0;}

原创粉丝点击