二分算法

来源:互联网 发布:入我相思门知我相思苦 编辑:程序博客网 时间:2024/04/30 18:05
  二分算法,一般是在已排序好的数组中提高搜索速度。 每次从middle处开始搜索。

  给出两个方法解决:

          递归法:

         

int bin_search(int arr[], int val, int l, int r){int m = (l+r)/2;if( l >= r ) return (arr[m] == val) ? m : -1;switch( (arr[m] == val) ? 0:((arr[m] < val) ? -1:-2) ){case 0:return m;case -1:return bin_search(arr, val, m+1, r);case -2:return bin_search(arr, val, l, m-1);}return -1;}


         非递归查询:

          

int bin_search(int arr[], int val, int len){int l = 0;int r = len;while(l <= r){int m = (l+r)/2;switch( arr[m] == val ? 0 : (arr[m] < val ? -1 : -2) ){case 0:return m;case -1:l = m+1;break;case -2:r = m-1;break;}}return -1;}


 

 

原创粉丝点击