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>
相关推荐
二分法查找 *进行二分法查找的前提是数组已有序 *查找范围的上下界
插补查找法 * 其原理与二分法查找是相同的,搜寻的对象大于500时, * 比二分法查找速度快 * (K-K1)/(Ku-K1)=(m-1)/(u-1)
——二分法查找 目录 课程导入 1 清楚并牢记二分法的实现条件 2 理解二分法的实现思路 3 读懂二分法的实现代码 数组的查找——二分法查找 也称拆半查找法,是一种高效的查找方法,前提条件是数组元素必须已经按升序...
本文将深入探讨Java中常用的八大排序算法以及二分法查找,旨在帮助算法爱好者和开发人员提升解决问题的能力。 首先,让我们来看Java中的八大排序算法: 1. 冒泡排序:这是一种简单的排序方法,通过重复遍历待排序...
本资料包聚焦于"Java常用排序算法"和"程序员必须掌握的8大排序算法",并深入探讨了"二分法查找"这一高效搜索技术。 首先,我们来看八大排序算法。这些算法包括: 1. **冒泡排序**:最简单的排序方法,通过不断交换...
python实现三种简单优化算法
本文将深入探讨Java中的冒泡排序、插入排序以及二分法查找这三种基础算法,这些都是面试时经常会被问到的技术点。 首先,让我们从冒泡排序开始。冒泡排序是一种简单直观的排序算法,它重复地遍历待排序的数列,一次...
采用二分法查找时,数据需是排好序的。 基本思想:假设数据是按升序排序的,对于给定值key,从序列的中间位置k开始比较, 如果当前位置arr[k]值等于key,则查找成功; 若key小于当前位置值arr[k],则在数列的前半段...
2.4.2求函数零点近似解的一种计算方法——二分法.pdf
二分法是一种高效的搜索算法,尤其适用于已排序的数组或列表。它的基本思想是通过不断地将待搜索区间减半,快速定位目标值的位置。在给定的文件中,提到了几个使用二分法解决的力扣(LeetCode)编程题目。 首先,...
二分查找算法,又称折半查找算法,是一种在有序数组中快速定位目标元素的搜索算法。它的基本思想是将待查找的元素与数组中间位置的元素进行比较,根据比较结果来决定是在数组的左半部分还是右半部分继续查找。通过...
在这个资源包中,我们重点关注的是使用C语言实现的二分法查找算法。 在C语言中,二分法查找的基本思路是这样的: 1. 首先,我们需要一个已排序的数组,因为二分法依赖于数据的有序性。 2. 然后,设置两个指针,一...
本篇文章将聚焦于一个重要的查找算法——二分法查找,它在处理大规模有序数据时表现出极高的效率。 二分法查找,也称为折半查找,是一种在有序数组中查找特定元素的搜索算法。其基本思想是通过不断将待搜索区间减半...
二分法查找(Binary Search)是一种查找算法,用于查找排序后的数组中是否包含某个元素。二分法查找的时间复杂度为O(log n),是当前最快的查找算法之一。 在上面的代码中,BinSearch函数是二分法查找的实现,函数的...
【Java 常用排序算法】排序是编程中常见的任务之一,主要分为四类:插入排序、交换排序、选择排序和归并排序。此外,还有分配排序中的基数排序。以下是对这些排序算法的详细说明: 1. **直接插入排序**: 直接插入...
### 二分法查找算法详解 #### 一、引言 二分法查找(Binary Search),也称为折半查找,是一种在有序数组中查找特定元素的高效算法。它的工作原理是通过将查找区间不断地对半分来缩小查找范围,直至找到目标元素或...
用递归函数实现二分法查找数组元素。 补充:要求给定数组采用如下代码定义 int data[200]; for (i=0; i; i++) data[i]=4*i+6; 输入格式 输入一个待查找的整数(该整数一定在数组data中)。 输出格式 ...
这种额外的信息可以用于设计更高效的查找算法,称为【改进的二分法查找】。在改进的二分法查找中,利用这些预知信息来调整查找策略,可能在某些情况下减少比较次数,从而进一步提升查找效率。 具体来说,如果知道...
二分法查找是一种常用的查找算法,也称为折半查找。它适用于有序数组中查找某个元素的位置。二分法查找的思路是将数组分成两部分,每次查找都将待查找区间缩小一半,直到找到目标元素或者待查找区间为空为止。 ...
本文将深入探讨《Java数据结构和算法》学习笔记的第一部分,主要聚焦于数组、二分法以及大O表示法。这些基础知识对于提升代码性能和优化解决方案具有决定性的作用。 **数组**是编程中最基本的数据结构之一,它在...