• 算法学习笔记(一):二分法及其实现


    基本思想:二分法的一个前提是序列已经是有序的,然后将待查找值与序列的中点比较。根据比较结果,选择下一步比较的部分。二分查找(binary search)就是一个不断重复这一查找过程,直到找到这个值。

    算法复杂度:O(lgn)

    算法实现:

    一:迭代法

    int bin_search_iteration(int arr[],int start,int end,int x)
    {
    
    
        
        while (start<end)
        {
            int mid = (start + end) / 2;
            if (arr[mid]<x)
            {
                start = mid + 1;
            }
            else if (arr[mid]==x)
            {
                return mid;
            }
            else
            {
                end = mid - 1;
            }
        }
        if (start == end)
            return arr[start] == x ? start : -1;
        else
        {
            return -1;
        }
    
    
    }

    二:递归法

    int  bin_search(int arr[],int start,int end,int x)
    {
        if (start == end)
            return arr[start]==x?start:-1;
        
        int mid = (start+end) / 2;
        if(arr[mid]==x)
        {
            return mid;
        }
        else if(arr[mid]>x)
        {
            return bin_search(arr, start,mid, x);
        }
        else
        {
            return bin_search(arr, mid+1,end, x);
        }
    
        
    }
  • 相关阅读:
    图片文件重命名
    MySql基础学习-Sql约束
    MySql基础学习-库表操作
    java内存模型
    数据库常用函数整理
    linux用户管理
    Db2数据库在Linux下的安装和配置
    图像金字塔
    特征值与特征向量
    齐次线性方程组
  • 原文地址:https://www.cnblogs.com/haoliuhust/p/binary_search.html
Copyright © 2020-2023  润新知