`
i拾贝
  • 浏览: 30014 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java搜索算法——二分法查找

    博客分类:
  • java
阅读更多

java搜索算法——二分法查找

搜索建立在排好序的基础之上

 TestSearch.java

//搜索算法
public class TestSearch {
	public static void main(String[] args) {
		
		//搜索建立在排好序的基础之上
		int a[] = { 1, 3, 6, 8, 9, 10, 12, 18, 20, 34 };
		
		//12这个值位于a[]的第几个位置
		int i = 12;
		
		System.out.println(search(a, i));
		System.out.println(binarySearch(a, i));//返回值12在数组里面的位置(下标)
	}
	
	//搜索全部
	public static int search(int[] a, int num) {
		for(int i=0; i<a.length; i++) {
			if(a[i] == num) return i;
		}
		return -1;
	}
	
	//二分法查找
	/*
		int[] a	查找的数组
		int num	查找数组中的值
		return	返回值的位置
	*/
	public static int binarySearch(int[] a, int num) {
		if (a.length==0) return -1;
		
		int startPos = 0; //起始位置
		int endPos = a.length-1;//结束位置
		int m = (startPos + endPos) / 2;//中间的位置
		
		/*
			起始位置比结束位置小,或等于,执行循环
			起始位置比结束位置大,循环结束
		*/
		while(startPos <= endPos){
			if(num == a[m]) return m;//找到了返回m
			if(num > a[m]) {
				startPos = m + 1;//起始位置向右调整
			}
			if(num < a[m]) {
				endPos = m -1;//结束位置向左调整
			}
			m = (startPos + endPos) / 2;//重新计算中间的位置
		}
		
		return -1;//没有找到返回-1
	}

}

 

F:\java>javac TestSearch.java

F:\java>java TestSearch
6
6

F:\java>

 

分享到:
评论

相关推荐

    java算法——二分法查找

    二分法查找 *进行二分法查找的前提是数组已有序 *查找范围的上下界

    java算法——插补查找法

    插补查找法 * 其原理与二分法查找是相同的,搜寻的对象大于500时, * 比二分法查找速度快 * (K-K1)/(Ku-K1)=(m-1)/(u-1)

    Java程序设计基础:一维数组应用查找二分法查找).pptx

    ——二分法查找 目录 课程导入 1 清楚并牢记二分法的实现条件 2 理解二分法的实现思路 3 读懂二分法的实现代码 数组的查找——二分法查找 也称拆半查找法,是一种高效的查找方法,前提条件是数组元素必须已经按升序...

    Java常用高效8大排序算法与二分法查找

    本文将深入探讨Java中常用的八大排序算法以及二分法查找,旨在帮助算法爱好者和开发人员提升解决问题的能力。 首先,让我们来看Java中的八大排序算法: 1. 冒泡排序:这是一种简单的排序方法,通过重复遍历待排序...

    Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找

    本资料包聚焦于"Java常用排序算法"和"程序员必须掌握的8大排序算法",并深入探讨了"二分法查找"这一高效搜索技术。 首先,我们来看八大排序算法。这些算法包括: 1. **冒泡排序**:最简单的排序方法,通过不断交换...

    三种搜寻极值点的算法测试——二分法、黄金分割法、分数法python实现

    python实现三种简单优化算法

    java 冒泡算法和插入法排序,二分法查找

    本文将深入探讨Java中的冒泡排序、插入排序以及二分法查找这三种基础算法,这些都是面试时经常会被问到的技术点。 首先,让我们从冒泡排序开始。冒泡排序是一种简单直观的排序算法,它重复地遍历待排序的数列,一次...

    非线性方程求根——二分法python

    采用二分法查找时,数据需是排好序的。 基本思想:假设数据是按升序排序的,对于给定值key,从序列的中间位置k开始比较, 如果当前位置arr[k]值等于key,则查找成功; 若key小于当前位置值arr[k],则在数列的前半段...

    2.4.2求函数零点近似解的一种计算方法——二分法.pdf

    2.4.2求函数零点近似解的一种计算方法——二分法.pdf

    力扣——二分法总结(python)(csdn)————程序.pdf

    二分法是一种高效的搜索算法,尤其适用于已排序的数组或列表。它的基本思想是通过不断地将待搜索区间减半,快速定位目标值的位置。在给定的文件中,提到了几个使用二分法解决的力扣(LeetCode)编程题目。 首先,...

    二分法查找算法C源码.rar_二分查找算法_二分法_二分法查找_;C源码;

    二分查找算法,又称折半查找算法,是一种在有序数组中快速定位目标元素的搜索算法。它的基本思想是将待查找的元素与数组中间位置的元素进行比较,根据比较结果来决定是在数组的左半部分还是右半部分继续查找。通过...

    二分法查找算法代码 c语言实现

    在这个资源包中,我们重点关注的是使用C语言实现的二分法查找算法。 在C语言中,二分法查找的基本思路是这样的: 1. 首先,我们需要一个已排序的数组,因为二分法依赖于数据的有序性。 2. 然后,设置两个指针,一...

    学学Python_34函数_创建函数04 二分法查找

    本篇文章将聚焦于一个重要的查找算法——二分法查找,它在处理大规模有序数据时表现出极高的效率。 二分法查找,也称为折半查找,是一种在有序数组中查找特定元素的搜索算法。其基本思想是通过不断将待搜索区间减半...

    数据结构快速排序二分法查找

    二分法查找(Binary Search)是一种查找算法,用于查找排序后的数组中是否包含某个元素。二分法查找的时间复杂度为O(log n),是当前最快的查找算法之一。 在上面的代码中,BinSearch函数是二分法查找的实现,函数的...

    Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找(同步到博客).doc

    【Java 常用排序算法】排序是编程中常见的任务之一,主要分为四类:插入排序、交换排序、选择排序和归并排序。此外,还有分配排序中的基数排序。以下是对这些排序算法的详细说明: 1. **直接插入排序**: 直接插入...

    写出二分法查找算法函数实现。

    ### 二分法查找算法详解 #### 一、引言 二分法查找(Binary Search),也称为折半查找,是一种在有序数组中查找特定元素的高效算法。它的工作原理是通过将查找区间不断地对半分来缩小查找范围,直至找到目标元素或...

    蓝桥杯 试题 算法提高 二分法查找数组元素

     用递归函数实现二分法查找数组元素。  补充:要求给定数组采用如下代码定义  int data[200];  for (i=0; i; i++)  data[i]=4*i+6; 输入格式  输入一个待查找的整数(该整数一定在数组data中)。 输出格式  ...

    改进的二分法查找

    这种额外的信息可以用于设计更高效的查找算法,称为【改进的二分法查找】。在改进的二分法查找中,利用这些预知信息来调整查找策略,可能在某些情况下减少比较次数,从而进一步提升查找效率。 具体来说,如果知道...

    Java二分法查找数组元素.zip

    二分法查找是一种常用的查找算法,也称为折半查找。它适用于有序数组中查找某个元素的位置。二分法查找的思路是将数组分成两部分,每次查找都将待查找区间缩小一半,直到找到目标元素或者待查找区间为空为止。 ...

    《Java数据结构和算法》学习笔记(1)——数组 二分法 大O表示法

    本文将深入探讨《Java数据结构和算法》学习笔记的第一部分,主要聚焦于数组、二分法以及大O表示法。这些基础知识对于提升代码性能和优化解决方案具有决定性的作用。 **数组**是编程中最基本的数据结构之一,它在...

Global site tag (gtag.js) - Google Analytics