二分搜索技术

简介:

分治法的基本思想:将一个规模为n的问题,分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归的解这些子问题,然后将各个子问题的解合并得到原问题的解。

经典例子:二分搜索

算法基本思想:

1 将n个元素分成个数大致相同的两半,取n/2与x进行比较。

2 如果找到,则终止,返回。

3 如果小于n/2,则在小半部分继续查找。

4 如果大于n/2,则在大半部分继续查找。

算法描述代码:

复制代码
#include <iostream>
using namespace std;

template <class Type>
int BinarySearch(Type a[],const Type &x,int n){
    int left=0;
    int right = n-1;
    while(left<=right){
        int middle = (left+right)/2;
        if(x == middle)
            return middle;
        if(x > a[middle])
            left = middle+1;
        else
            right = middle-1;
    }
    return -1;
}
int main()
{
    int num[10] = {0,9,8,7,6,5,4,3};
    int a;
    cout<<"输入想要查找的数字:"<<endl;
    cin>>a;
    int find = BinarySearch(num,a,9);
    if(find!=-1)
        cout<<find<<endl;
    else
        cout<<"找不到想要的结果"<<endl;
    return 0;
}
复制代码

运行结果如下:

本文转自博客园xingoo的博客,原文链接:二分搜索技术,如需转载请自行联系原博主。
相关文章
|
2月前
|
算法 搜索推荐 数据库
二分搜索:高效的查找算法
【10月更文挑战第29天】通过对二分搜索的深入研究和应用,我们可以不断挖掘其潜力,为各种复杂问题提供高效的解决方案。相信在未来的科技发展中,二分搜索将继续发挥着重要的作用,为我们的生活和工作带来更多的便利和创新。
61 1
|
3月前
|
算法 Java 索引
数据结构与算法学习十五:常用查找算法介绍,线性排序、二分查找(折半查找)算法、差值查找算法、斐波那契(黄金分割法)查找算法
四种常用的查找算法:顺序查找、二分查找(折半查找)、插值查找和斐波那契查找,并提供了Java语言的实现代码和测试结果。
40 0
|
算法 C++
【基础算法】顺序查找 折半查找 & C++实现
顺序查找比较简单,就是顺序遍历我们所要查找的内容,判断并找出相应的目标数。比较简单,在这里不用图形说明程序实现具体情况。当面临大量数据时,顺序查找的效率非常低,时间复杂度大,所以会采用其他方法进行查找。
190 0
【基础算法】顺序查找 折半查找 & C++实现
|
存储 算法 Windows
【趣学算法】Day4 分治算法——二分搜索
【趣学算法】Day4 分治算法——二分搜索
114 0
|
缓存 NoSQL 算法
一日一技:二分偏左,二分搜索在分布式系统里面也有用?
一日一技:二分偏左,二分搜索在分布式系统里面也有用?
100 0
|
算法
【21天算法学习】折半查找
【21天算法学习】折半查找
101 0
|
算法 JavaScript Serverless
日拱算法之判断平衡二叉树
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
|
算法 Java 索引
经典算法——顺序查找
经典算法——顺序查找
经典算法——顺序查找
回溯法、另辟蹊径法 求数组的全排序
回溯法、另辟蹊径法 求数组的全排序
85 0
回溯法、另辟蹊径法 求数组的全排序

热门文章

最新文章