#p12. 二分查找

二分查找

二分查找介绍

二分查找(Binary Search)是一种高效的查找算法,用于在有序数组中查找特定元素的位置。

以在升序序列中查找目标元素为例:

1、初始状态下,将整个序列作为搜索区域(假设为 [B, E]);

2、找到搜索区域内的中间元素(假设所在位置为 M),和目标元素进行比对。如果相等,则搜索成功;如果中间元素大于目标元素,表明目标元素位于中间元素的左侧,将 [B, M-1] 作为新的搜素区域;反之,若中间元素小于目标元素,表明目标元素位于中间元素的右侧,将 [M+1, E] 作为新的搜素区域;

3、重复执行第二步,直至找到目标元素。如果搜索区域无法再缩小,且区域内不包含任何元素,表明整个序列中没有目标元素,查找失败。

本题主要让大家学习二分查找,不要求测试全过,没AC不要紧的。

题目描述

找出数组按升序排序后目标元素所在的位置(即数组下标)。若不存在目标元素,输出 -1。

输入格式

第一行输入一个 N 表示元素的个数;

第二行输入 N 个数据存到数组 a 里面;、

第三行输入目标元素 target 。

输出格式

输出目标元素的位置 ;若不存在,输出 -1 。

输入输出示例

示例1:

输入

5
1 9 0 1 2
3

输出

-1

示例2:

输入

4
2 1 1 2
2

输出

2

数据限制

0 =< N <= 1e6