zoukankan      html  css  js  c++  java
  • 二分查找

    /*
        先定数组长度,无法获取一个Int数组的真实长度 如 int a[20]={1,2}
        实际长度是多少呢? sizeof(a)/sizeof(a[0])是算不出来的!只能自己写函数了!
        注意,二分查找是查找一个有序的序列,这里的演示的有序,有两种
        1、bindSearch函数自身提供的数组(索引器)的下标有序,废话,数组本来就有序。
        2、被查找的数据的索引也要有序,什么意思?看一个json结构
        [
            {
                id:1,name:mike
            },
            
            {
                id:2,name:rock
            },
        
        ]    
        所以这里的id必须排序
    */
    
    void bindSearch() {
    
        /*    low ---- mid------higt      */
        
        int low = 0, 
            higt,
            mid = 0,
            len, 
            a[] = { 1,3,4,12,13,15 },
            key=1;
    
        len = sizeof(a) / sizeof(a[0]) - 1;
        higt = len-1;
    
        if (len <= 0) {
    
            printf("折半查找!至少两个数据嘛!
    ", len, mid);
            return;
        }
    
        
        
        while (low <= higt) {
    
            mid = (low + higt) / 2 ;
            printf("当前数组长度=>%d,mid=>%d
    ", len, mid);
            if ( a[mid] == key ) {
                printf("已经找到
    ");
                return;
            }else if( a[mid] < key ){
                low = mid + 1;
            }else if (a[mid] > key) {//大于key
                higt = mid - 1;
            }else {
                printf("抱歉怕是出了一些奇怪的问题!
    ");
                return;
            }
        }
        printf("抱歉啥也没有!
    ");
    }
  • 相关阅读:
    uni-app调用原生的文件系统管理器(可选取附件上传)
    uni-app图片压缩转base64位 利用递归来实现多张图片压缩
    解释器模式
    外观模型
    装饰模式
    组合模式
    原型模式
    简单工厂模式
    抽象工厂模式
    工厂方法模式
  • 原文地址:https://www.cnblogs.com/cfas/p/12359797.html
Copyright © 2011-2022 走看看