• 二分查找


    /*
        先定数组长度,无法获取一个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("抱歉啥也没有!
    ");
    }
  • 相关阅读:
    AFN 控制字符报错(无法解析)
    HTTP POST请求报文格式分析与Java实现文件上传
    xcrun
    Makefile选项CFLAGS,LDFLAGS,LIBS
    Xcode 编译错误
    iOS 11 适配
    机器学习算法之决策树
    Python extend 和 append 的区别
    Python warning_function name should be lowercase
    使用matplotlib绘制导数图像
  • 原文地址:https://www.cnblogs.com/cfas/p/12359797.html
Copyright © 2020-2023  润新知