VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 417|回复: 1

[讨论] 二分查找算法

[复制链接]
liontxl 发表于 2017-1-7 23:26:08 | 显示全部楼层 |阅读模式
/************************************************************************/
/*                                                二分查找算法                                     */
/************************************************************************/
#include <iostream>
#include <vector>
using namespace std;

typedef unsigned short USHORT;

int main()
{
        // 初始化容器
        vector<USHORT> li;
        for (USHORT ni = 0; ni <= 2048; ++ni)
        {
                li.push_back(ni);
        }
       
        USHORT unNumber = 500;                // 需要查找的数据
       
        // 二分查找算法
        USHORT itBegin = 0;                        // 头部下标
        USHORT itEnd = li.size();        // 尾部下标
        USHORT it;                                        // 中部下标
        USHORT i = 0;                                // 循环次数
        while (itBegin < itEnd)
        {
                // 计算中部下标
                it = (itBegin + itEnd) / 2;
       
                if (li[it] < unNumber)
                { //如果中部下标的数据是否小于需要查找的数据,是则将头部下标移动到中部下标处
                        itBegin = it;
                }
                else
                if (li[it] > unNumber)
                {//判断中部下标的数据是否大于需要查找的数据,是则将尾部下标移动到中部下标处
                        itEnd = it;
                }
                else
                        if (li[it] == unNumber)// 判断中部下标的数据是否为需要查找的数据
                        {
                                cout << "Find data!" << endl;
                                break;
                        }
                cout << "循环第:" << ++i << "次!" << endl;
        }
        system("pause");
        return 0;
}


/************************************************************************/
/* 定义三个下标,分别为被查找数据的头部、中部、尾部                                                        */
/* 第一轮循环:获取中部下标的值!即头部数据加尾部数据之和除以2                                */
/* 判断中部下标的数据是否为需要查找的数据                                                                        */
/* 如果中部下标的数据小于需要查找的数据,则将头部下标移动到中部下标处重新循环*/
/* 如果中部下标的数据大于需要查找的数据,则将尾部下标移动到中部下标处重新循环*/
/************************************************************************/

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

 楼主| liontxl 发表于 2017-1-7 23:29:22 | 显示全部楼层
求更改。希望把下标改成迭代器。但是不知道该怎么移动迭代器啊啊啊啊啊啊

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站

本版积分规则

展开

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )

返回顶部
x

VC驿站微信公众号cctry2009

GMT+8, 2017-12-13 22:46

Powered by Discuz!

© 2009-2017 cctry.com

快速回复 返回顶部 返回列表