/**
 * 二分法 :用折半查找法在一组排好序(递增有序或递减有序)的值中查找某个数据。
 *
 * 基本思想:
 *
 * 首先将待查数据k与排好序(递增有序)的一组数据的中间位置上的数据进行比较, 若相等,则查找成功;
 * 若k>a[mid],则待查数据k只可能出现在右半部a[mid+1…n]中,则应在这个右半部中再进行折半查找;
 * 若k<a[mid],则待查数据k只可能出现在左半部a[1…mid-1]中,则应在这个左半部中再进行折半查找;
 * 这样通过逐步缩小查找范围,直到找到或找不到该数据k为止。
 *
 * @author Administrator
 *
 */
public class BinarySearch
{

public static int binarySearch(int[] a, int key)
 {
  if (a == null || a.length == 0)
  {
   return -1;
  }
  // 开始位置
  int first = 0;
  // 结束位置
  int last = a.length - 1;
  // 中间位置
  int mid;
  // 如果开始时,小于则结束.
  while (first < last)
  {
   mid = (first + last) / 2;
   // 如果等于key,返回这个数在数组中的位置.
   if (a[mid] == key)
    return mid;
   // 如果大于key,则在左边.
   if (a[mid] > key)
    last = mid - 1;
   // 如果小于key,则在右边
   if (a[mid] < key)
    first = mid + 1;
  }
  return -1;
 }

public static void main(String[] args)
 {
  int[] a =
  { 1, 3, 4, 5, 8, 7, 9, 11, 15 };
  System.out.println(binarySearch(a, 9));
 }
}

(面试题)用折半查找法在一组整形数组中查找某个数据相关推荐

  1. [算法]LeetCode 专题 -- 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置

    LeetCode 专题 – 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置 难度:中等 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值 ...

  2. java数组查找指定元素_Java在数组中查找指定元素

    以下实例演示了如何使用 contains () 方法来查找数组中的指定元素: import java.util.ArrayList; public class Main { public static ...

  3. java数组查找指定元素_Java在数组中查找指定元素的方法

    以下实例演示了如何使用 contains () 方法来查找数组中的指定元素: 例子1 import java.util.ArrayList; public class Main { public st ...

  4. 剑指Offer - 面试题53 - I. 在排序数组中查找数字 I(二分查找的变形版本)

    1. 题目 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2示例 2: 输入: nums = [5,7,7,8, ...

  5. 【C语言】用二分查找法在有序数组中查找具体的某个数

    当给定一个有序数组,而我们要在这个数组中查找某个数时,我们常常用从头到尾的排除法遍历寻找,但是这种方式及其低效,n个数的数组最差要找n次.而后面我们会知道,二分查找法则高效的多,最差要找log以2为低 ...

  6. 去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...

    作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...

  7. python数组中查找某个值,Python实现在某个数组中查找一个值的算法示例

    如何在python列表中查找某个元素的索引 方法一: 利用数组自身的特性 a.index(target), 其中a是目标list,target是需要的下标对应的值.代码如下: 可知索引为2.但是如果a ...

  8. 网易_在数组中查找前K个元素

    笔试题,最后一题 查找网易云音乐中播放量最大的前K个歌曲. 换句话说,就是在数组中查找前K大元素. 大致有以下几个思路. 1.第一感觉就是对数组进行降序全排序,然后返回前K个元素,即是需要的K个最大数 ...

  9. 34. 在排序数组中查找元素的第一个和最后一个位置

    34. 在排序数组中查找元素的第一个和最后一个位置(两种方法记录) 法一(BP算法--使用双指针分别从前.后定位first index和last index),代码如下: class Solution ...

  10. 从 byte 数组中查找匹配内容的索引

    从 byte 数组中查找匹配内容的索引 在处理串口数据时,我们一般会这么处理: 先用一个缓存 byte 数组来缓存接收到的串口数据,然后在另一个处理线程中,再从缓存 byte 数组中查找特定标识(报文 ...

最新文章

  1. oracle 自动补全函数,Oracle自我补充之trunc()函数的使用方法
  2. 非监督HMP算法的物体识别
  3. JMM(Java内存模型)
  4. 流感疫情严重 港府宣布全港幼儿园26日起提前放假
  5. linux 酷炫的命令行
  6. c#中窗体的close、dispose的区别及分析
  7. 类、对象以及jvm运行内存解析
  8. android与ndk交互,NDK-JNI与Java的交互 hello-world
  9. UML---StarUML破解与使用
  10. Java编程:排序算法——冒泡排序
  11. 鸿蒙系统一定要成功,鸿蒙造化珠
  12. ArcGIS计算图斑的四邻坐标(XMin,XMax,YMin,YMax)
  13. 内网穿透妙用——内网转公网nat123
  14. 各大android应用商店的展示权重 安卓应用商店关键词+下载量+评价+其他这几项占的权重(仅供参考)
  15. (1) Dot net“很难”实现像Java一样的跨平台性
  16. 20个发人深思地寓言故事
  17. 開始EEPlat之旅
  18. 无人机照片、车载相机街景影像
  19. 优傲机器人(Universal Robot)使用笔记
  20. Go 语言 map的使用

热门文章

  1. 中电信推大学生3G上网套餐
  2. Netlink 0008 --- 通信
  3. linux网络子系统分析(五)——netfilter
  4. Linux acpi off报告ACPI bug处理方法
  5. mysql数据库白羽_Android应用开发Android 友盟推送原理解析
  6. jquery radio设置选中_前端jQuery实战之 attr() 和 prop() 的区别
  7. rabbitmq使用_RabbitMQ 简介以及使用场景
  8. 数学建模美赛E题数据获取
  9. 设计模式之简单工厂模式,工厂方法模式,抽象工厂模式
  10. SLAM学习笔记-------------(九)后端1