package com.myway.study;
/**
* 二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的话,其顺序为:
* 1.第一步查找中间元素,即5,由于5<6,则6必然在5之后的数组元素中,那么就在{6, 7, 8, 9}中查找,
* 2.寻找{6, 7, 8, 9}的中位数,为7,7>6,则6应该在7左边的数组元素中,那么只剩下6,即找到了。
* 二分查找算法就是不断将数组进行对半分割,每次拿中间元素和goal进行比较
* User: zhangyong
* Date: 14-5-14
* Time: 下午10:06
* To change this template use File | Settings | File Templates.
* 二分查找的基本思想是将n个元素分成大致相等的两部分,去a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x.
时间复杂度无非就是while循环的次数!
总共有n个元素,
渐渐跟下去就是n,n/2,n/4,....n/2^k,其中k就是循环的次数
由于你n/2^k取整后>=1
即令n/2^k=1
可得k=log2n,(是以2为底,n的对数)
所以时间复杂度可以表示O()=O(logn)
*/
public class BinarySearch {
public int sort(int[] arr, int searchNum) {
int length = arr.length;
int low = 0;
int high = length - 1;
while (low <= high) {
int middle = (low + high) / 2;
int middleValue = arr[middle];
if (middleValue == searchNum) {
return middle;
} else if (middleValue > searchNum) {
high = middle;
} else {
low = middle;
}
}
return -1;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 5, 6, 7, 8};
System.out.println(new BinarySearch().sort(arr, 7));
}
}
分享到:
相关推荐
### C++ 二分查找法详解 在计算机科学领域,数据结构与算法是核心课程之一,其中二分查找法(Binary Search)是一种高效的查找技术,尤其适用于有序数组或列表的搜索场景。本文将深入探讨C++中实现二分查找法的具体...
二分查找法是一种在有序数组中查找特定元素的高效算法,其基本思想是将查找区间不断缩小至一半,直到找到目标元素或者确定不存在为止。在MATLAB中实现二分查找法,可以极大地提高搜索效率,尤其对于大数据量的处理。...
用java实现二分查找法BianrySearch 用java实现二分查找法BianrySearch 用java实现二分查找法BianrySearch
### 二分查找法知识点详解 #### 一、二分查找法概述 二分查找法是一种在有序数组中查找特定元素的高效算法。其基本原理是通过将目标值与数组中间元素进行比较来缩小搜索范围,从而达到快速查找的目的。由于每次比较...
用java二分查找法实现日期搜索 用java二分查找法实现日期搜索 用java二分查找法实现日期搜索
二分查找法,又称折半查找法,是计算机科学中一种高效的搜索算法,尤其适用于已排序的数据集合。在Java中,二分查找法通常用于数组或有序列表中,其核心思想是通过不断缩小搜索范围来快速定位目标元素。以下是关于...
本主题主要关注两种常见的查找方法:顺序查找法和二分查找法。这两种方法在不同的场景下各有优势,理解并能熟练运用它们对于优化程序性能至关重要。 首先,我们来讨论顺序查找法。这种方法是最基础的查找策略,适用...
该程序是我写的博客“一起talk C栗子吧(第二十五回:C语言实例-二分查找)”的配套程序,共享给大家使用
二分查找法是一种在有序数组中查找特定元素的搜索算法,其主要优点在于查找速度快。对于长度为1024的表,最多只需要10次比较就能找到目标元素,这在NTC温度表(长度通常在100-500之间)的场景下,可以显著提高查表...
二分查找法是一种高效的数据搜索算法,其时间复杂度为O(log n),在处理大量有序数据时具有显著优势。在算法复杂度分析中,时间复杂度是衡量算法效率的重要指标,按照优劣排序大致为:O(1)、O(log n)、O(n)、O(n log ...
二分查找法是一种在有序数组中寻找特定元素的高效搜索算法。它的基本思想是通过不断地将待搜索区域减半,逐步缩小目标元素的可能位置范围,直到找到目标元素或者确定其不存在为止。在GD32F303这样的单片机上,二分...
假设有一个人要我们猜0-99之间的一个数,那么最好的方法就是从0-99的中间数49开始猜。 如果要猜的数小于49,就猜24(0-48的中间数);如果要猜的数大于49,就猜74(50-99的中间数)。...二分查找的工作方法就是如此。
二分查找法 课件 描述了二分查找的前提条件 和基本思想,算法过程
二分查找法,又称折半查找,是一种在有序数组中高效寻找特定元素的搜索算法。它的核心思想是通过不断地将待查找的区间减半来快速定位目标元素。以下是关于二分查找法的详细说明: 1. **使用前提**:二分查找法要求...
二分查找法也称为折半查找法,它是在有序数组中进行查找的一种高效方法。这种方法利用了数组有序的特点,通过不断将查找区间对半分割来减少搜索范围,从而显著提高查找效率。二分查找的时间复杂度为O(logn),这使得...
折半查找法,又称二分查找法,是一种在有序数组中高效寻找目标值的算法。其核心思想是利用数组的有序性,通过不断缩小搜索范围,以递归或迭代的方式快速定位目标值。该方法特别适合于大规模数据的查找,因为它的平均...
二分查找法是一种在有序数组中寻找特定元素的搜索算法,具有高效的特点。它通过将查找范围不断减半,直到找到目标元素或者确定其不存在为止。这种方法尤其适用于大型且已经排序的数据集,如电话簿、数据库索引等。在...
这里我们将讨论如何利用二分查找法,即折半查找法,来实现这一过程。 首先,我们需要理解PT100的基本工作原理。PT100的全称是铂100,意味着当温度为0℃时,它的阻值为100欧姆。随着温度升高,电阻值也会线性增加。...