作者:银河使者 来源:博客园   酷勤网收集 2008-05-12

摘要
  本文使用c语言实现拆半查找算法,并且提供递归和非递归两种方法,文中未给出相关测试情况,酷勤网不保证代码的可用新。

#include <stdio.h>  

int binary_search(int x, int data[], int b, int e) 
{     
    
int i;     
    
while(b <= e)     
    {     
        i 
= (b + e) / 2;     
        
if(data[i] == x) return i;     
        
if(data[i] < x)          
            b 
= i + 1;     
        
else         
            e 
= i - 1;             
    }     
    
return -1;     
}  

int binary_search_recursion(int x, int data[], int b, int e) 
{     
    
int i;     
    i 
= (b + e) / 2;     
    
if(b > e) return -1;     
    
if(data[i] != x)     
    {     
        
if(x < data[i])         
            
return binary_search_recursion(x, data, 0, i - 1);     
        
else         
            
return binary_search_recursion(x, data, i + 1, e);     
    }     
    
else         
        
return i; 
}  

int main() 
{     
    
int data[] = {14579};     
    printf(
"%d \n", binary_search_recursion(9, data, 04));     
    printf(
"%d \n", binary_search(9, data, 04));     
    printf(
"%d \n", binary_search_recursion(90, data, 04));     
    printf(
"%d \n", binary_search(89, data, 04));     
    
return 0

来自:拆半查找的递归和非递归算法

分类: 算法艺术 设计模式

上一篇:棋盘覆盖问题的算法实现   下一篇:得到第K个大的数算法研究