二分查找算法(C++)

13 篇文章 3 订阅

C++二分查找算法

原理如下图:

这里写图片描述
该算法只针对有序列表才有意义。

#include <iostream>
using namespace std;
//二分搜索算法,折半查找
//二分查找要求被查找的数组的元素是按照有序的顺序排列的
int main()
{
    int array[100];
    //数组的大小
    int size = 0;
    cout << "输入需要创建的数组的元素个数:" << endl;
    cin >> size;
    //向数组中按序添加元素
    for (auto i = 0; i < size; i++)
    {
        array[i] = i;
    }
    //输入要在数组中查找的书
    int checkElement;
    cin >> checkElement;
    //数组的第一个元素
    int headIndex = 0;
    //数组的最后一个元素
    int tailIndex = (size - 1);
    if (checkElement<headIndex || checkElement>tailIndex)
    {
        cout << "你输入的数字不在当前搜索的范围内" << endl;
        return 0;
    }
    //对数组进行遍历,找出对应数字在数组中的下标索引
    int centerIndex = (headIndex + tailIndex) / 2;
    //如果中间索引的值大于要搜索的值,则在左边进行查找
    while (headIndex <= tailIndex)
    {
        if (array[centerIndex] < checkElement)
        {
            headIndex = centerIndex + 1;
            cout << "查找中----右边" << endl;
        }
        else if (array[centerIndex] == checkElement)
        {
            cout << "查找到了当前的数字" <<array[centerIndex]<<endl;
            break;
        }
        else
        {
            tailIndex = centerIndex - 1;
            cout << "查找中----左边" << endl;
        }
        centerIndex = (headIndex + tailIndex) / 2;
    }
    if (headIndex > tailIndex)
    {
        cout << "当前数组中没有查找到你想要的数字" << endl;
    }
    return 0;
}

注意输入的数组的大小不要大于初始给定的数组的长度。

欢迎关注公众号,每周分享Unity3D、C++、C#、数据结构和算法学习的相关知识。

码码小虫

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值