zoukankan      html  css  js  c++  java
  • 折半查找以及折半查找递归注意点示范:同时附带return 值。

    代码演示在ubuntu下gcc演示:详细参考数据结构C语言版

    #include<stdio.h>
    #define COMPARE(x,y) (((x)<(y))?-1:((x)==(y))?0:1)//折半查找的迭代函数
    int binsearch(int list[],int searchNum,int left,int right)
    {
        int middle;
        while(left<=right)
        {
            middle=(left+right)/2;
            switch(COMPARE(list[middle],searchNum))
            {
                case -1:left=middle + 1;
                        break;
                case 0 :return middle;
                case 1 : right = middle -1;
            }
        }
        return -1;
    }
    //目前初步来说将一个函数转换为一个递归函数,必须有两个要素:构造递归调用终止的边界条件&&实现递归调用,使得每次递归调用都能够向最终解逼近一步。
    int binsearch(int list[],int searchNum,int left,int right)//折半查找的递归函数
    {
        int middle;
        while(left<=right)
        {
            middle=(left+right)/2;
            switch(COMPARE(list[middle],searchNum))
            {
                case -1:return binsearch(list,searchNum,middle + 1,right);
                case 0 :return middle;
                case 1 :return binsearch(list,searchNum,left,middle - 1);
            }
            }
        return -1;
    }
    
    
    //关于return -1/0/1的意思,折半查找函数中,如果返回为-1,就是说明没有找到相等的数据,非正常结束。return 0表示正常退出,return 非0表示异常结束。
  • 相关阅读:
    2017-12-25
    oracle 创建表,增加修改删除字段
    jqxWidgets 常用代码
    Oracle初始化用户-表空间-权限
    Oracle 切换数据库实例
    ORE(Oracle R Enterprise)安装步骤
    Java 枚举类的基本使用
    Java可变参数
    java的封箱和拆箱
    spring 九种设计模式
  • 原文地址:https://www.cnblogs.com/dog-and-cat/p/6636941.html
Copyright © 2011-2022 走看看