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

    1. 素数判断

    2. 递归二分查找

    3. 循环二分查找

    一、判断一个数是否为素数

    素数:在大于1的自然数中,除了1和它本身,不再有其他因数的自然数

    int checkNumber(int number) {
        if (number < 2) {
            return 0;
        }
        for (int i = 2; i < number; i++) {
            if (number % i == 0) {
                return -1;
            }
        }
        return 1;
    }

    二、递归实现二分查找

    int binarySearch(int key,int data[],int low,int high) {
        if (low >= high) {
            return -1;
        }
        int mid = (low + high) / 2;
        if (key < data[mid]) {
            return binarySearch(key,data,low,mid);
        }
        else if(key >data[mid]){
            return binarySearch(key,data,mid+1,high);
        }
        else {
            return mid;
        }
    }

    递归耗时: 44 ms

    三、循环实现二分查找

    int binarySearch(int* data,int size,int target) {
        int left = 0;
        int right = size - 1;
        while (left <= right) {
            int mid = (left + right) / 2;
            if (target > data[mid]) {
                left = mid + 1;
            }
            else if(target < data[mid]){
                right = mid - 1;
            }
            else {
                return mid;
            }
        }
        return -1;
    }

    耗时:32 ms

  • 相关阅读:
    mysql事务
    mysql查询操作教程
    mysql建表约束
    mysql数据库增删改查
    node服务器响应静态资源
    windows下golang版本的升级
    Linux开机错误
    redis命令
    nginx内置变量
    nginx日志
  • 原文地址:https://www.cnblogs.com/bytecodebuffer/p/13972722.html
Copyright © 2011-2022 走看看