拆半查找的递归和非递归算法

简介: 本文为原创,如需转载,请注明作者和出处,谢谢! #include   int binary_search(int x, int data[], int b, int e)  {          int i;          whi...
本文为原创,如需转载,请注明作者和出处,谢谢!

#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[]  =  { 1 4 5 7 9 };     
    printf(
" %d /n " , binary_search_recursion( 9 , data,  0 4 ));     
    printf(
" %d /n " , binary_search( 9 , data,  0 4 ));     
    printf(
" %d /n " , binary_search_recursion( 90 , data,  0 4 ));     
    printf(
" %d /n " , binary_search( 89 , data,  0 4 ));     
    
return   0


国内最棒的Google Android技术社区(eoeandroid),欢迎访问!

《银河系列原创教程》发布

《Java Web开发速学宝典》出版,欢迎定购

目录
相关文章
|
2月前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
71 2
|
7月前
|
算法 C++
算法笔记:递归(c++实现)
算法笔记:递归(c++实现)
|
7月前
|
存储 算法 程序员
数据结构与算法===递归
数据结构与算法===递归
|
3月前
|
算法 搜索推荐 Shell
数据结构与算法学习十二:希尔排序、快速排序(递归、好理解)、归并排序(递归、难理解)
这篇文章介绍了希尔排序、快速排序和归并排序三种排序算法的基本概念、实现思路、代码实现及其测试结果。
65 1
|
3月前
|
算法 定位技术
数据结构与算法学习九:学习递归。递归的经典实例:打印问题、阶乘问题、递归-迷宫问题、八皇后问题
本文详细介绍了递归的概念、重要规则、形式,并展示了递归在解决打印问题、阶乘问题、迷宫问题和八皇后问题等经典实例中的应用。
65 0
|
5月前
|
算法
【算法】递归、搜索与回溯——汉诺塔
【算法】递归、搜索与回溯——汉诺塔
|
6月前
|
算法 Python
python中算法递归错误(Recursion Errors)
【7月更文挑战第18天】
101 1
|
5月前
|
算法
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
132 0
|
5月前
|
算法
【算法】递归、搜索与回溯——简介
【算法】递归、搜索与回溯——简介
|
7月前
|
机器学习/深度学习 算法 C语言
详细介绍递归算法在 C 语言中的应用,包括递归的基本概念、特点、实现方法以及实际应用案例
【6月更文挑战第15天】递归算法在C语言中是强大力量的体现,通过函数调用自身解决复杂问题。递归涉及基本概念如自调用、终止条件及栈空间管理。在C中实现递归需定义递归函数,分解问题并设定停止条件。阶乘和斐波那契数列是经典应用示例,展示了递归的优雅与效率。然而,递归可能导致栈溢出,需注意优化。学习递归深化了对“分而治之”策略的理解。**
147 7

热门文章

最新文章