条件1:数组为整型数组,并且有序
条件2:用递归方法,数组包含传的数字,就返回存在于数组的位置,否则返回-1
二分法原理:有序数组,取中间数字(A)和要查找的参数(B)比较,如果A>B,则说明B在A的左侧,否则在右侧,然后再拿左侧的中间数字和B比较,以此类推。
代码:
/**
* 二分法查找,在有序数组中找位置
* @author 张凯
* @email zhangkai081@gmail.com
* @see 做人,总要信。
*/
public class TwoSearch {
/**
* 二分法查找
* @param number 有序数组
* @param num 要查找的数字
* @param left 左边位置
* @param right 右边位置
* @param mid 中间位置
* @return 返回数字在数组中的位置,没有则返回-1
*/
public static int search(int[] number,int num,int left,int right,int mid) {
/**
* 1,left == right 说明数组为空或长度为1
* 2,number[mid] != num 说明数组长度为1的时候,元素不等于要找的数字
*/
if (left == right && number[mid] != num) {
return -1;
}
/**
* 如果number[mid] == num 那就返回mid。
*/
if (number[mid] == num) {
return mid;
}
/**
* 如果mid == left 或者 mid == right ,说明从中间已经找到left或者right边了,还没有找到,返回-1
*/
if (mid == left || mid == right) {
return -1;
}
/**
* 如果大于中间,那往right找,然后把right侧的再折半找
*/
if (num > number[mid]) {
mid++;
return search(number,num,mid,right,(mid+right)/2);
} else {
/**
* 如果小于中间的数字,就往left找,然后把left侧的再折半找
*/
mid--;
return search(number,num,left,mid,(left+mid)/2);
}
}
/**
* 测试
* @param args
*/
public static void main(String[] args) {
int[] number = {1,4,5,66,77,4545};
int num = 66;
int left = 0;
int right = number.length - 1;
int mid = (left + right) / 2;
int a = search(number, num, left, right, mid);
System.out.println(a);
}
}
ps:如果写的有问题,给指出来,谢谢啦。如有更好的方法也可以讨论。
分享到:
相关推荐
C#二分法快速查找查找连续数字,C#二分法快速查找查找连续数字,C#二分法快速查找查找连续数字,C#二分法快速查找查找连续数字,
"数据结构快速排序二分法查找" 快速排序和二分法查找是数据结构中两个非常重要的概念,它们都是解决实际问题的重要工具。在本文中,我们将详细介绍快速排序和二分法查找的原理、实现和应用。 快速排序 快速排序...
二分法查找 *进行二分法查找的前提是数组已有序 *查找范围的上下界
### C语言中的二分法查找 #### 知识点概览 1. **二分法查找的基本原理** 2. **二分法查找的适用场景** 3. **算法实现细节** 4. **时间复杂度分析** 5. **空间复杂度分析** 6. **代码示例与分析** 7. **常见问题及...
二分法查找,又称折半查找,是一种在有序数组中搜索特定元素的高效算法。它通过不断缩小搜索范围,将查找复杂度降低到对数级别,显著提高了查找效率。在这个资源包中,我们重点关注的是使用C语言实现的二分法查找...
这段代码实现了基本的二分查找功能,用于在一个预定义的有序整数数组中查找用户输入的数字。代码的关键部分包括: 1. **初始化数组**:`int table[N]={0,2,4,6,8,10,12,14,16,18};` 这里定义了一个大小为10的整型...
具体做法是,根据D值调整中间点的选择策略,使得查找过程更加贴近目标值所在的位置。比如,如果D值较小,表示数列中元素的分布较为均匀,那么传统的二分查找是高效的。但如果D值较大,表明数列中的元素可能呈现等差...
——二分法查找 目录 课程导入 1 清楚并牢记二分法的实现条件 2 理解二分法的实现思路 3 读懂二分法的实现代码 数组的查找——二分法查找 也称拆半查找法,是一种高效的查找方法,前提条件是数组元素必须已经按升序...
使用二分法查找的MATLAB程序编写,方便刚接触MATLAB的同学分享学习。
### 图解数据结构:二分法查找法 #### 一、引言 在计算机科学领域,数据结构与算法是核心的基础知识。其中,查找算法作为数据处理中的关键环节,其效率直接影响着系统的性能。二分查找法(Binary Search),作为一...
二分法查找和顺序查找 排序后二分法
题目要求演示二分法查找过程,用箭头跟踪指示出二分查找过程中的查找位置。设计思想为用两个数组实现,一个用于存数据另一个用来存箭头。只要存箭头的下标于每次查找的数的下标相等就可以实现,难点在于如何把数得...
**易语言有序二分法查找**是一种在已排序的数据序列中快速查找特定元素的高效算法。易语言,作为中国本土的编程语言,以其简洁的语句和易学性深受初学者喜爱。在这个主题中,我们将深入探讨有序二分法查找的原理、...
二分法查找,又称折半查找,是一种在有序数组中搜索特定元素的高效算法。它利用了数组的线性特性,每次将待搜索区域减半,直到找到目标元素或者确定不存在为止。这种方法大大减少了查找所需的平均时间复杂度,是...
二分法查找是一种高效的查找算法,在有序数组中尤其适用。其基本思想是从已排序数组的中间元素开始查找,如果目标值与中间元素相等,则查找成功;如果目标值小于中间元素,则在数组的左半部分继续查找;如果目标值...
二分法查找是一种常用的查找算法,也称为折半查找。...总之,二分法查找是一种常用的查找算法,适用于有序数组中查找某个元素的位置。通过将待查找区间缩小一半的方式,可以快速地定位目标元素,时间复杂度为O(log n)。
本篇文章将聚焦于一个重要的查找算法——二分法查找,它在处理大规模有序数据时表现出极高的效率。 二分法查找,也称为折半查找,是一种在有序数组中查找特定元素的搜索算法。其基本思想是通过不断将待搜索区间减半...
在C语言中实现二分法查找,你需要定义一个函数,该函数接受一个有序数组、目标值以及数组的起始和结束索引作为参数,并返回目标值在数组中的位置或者一个特殊值表示未找到。 接下来,我们转向散列查找(Hashing)。...
易语言源码有序二分法查找易语言源码.rar 易语言源码有序二分法查找易语言源码.rar 易语言源码有序二分法查找易语言源码.rar 易语言源码有序二分法查找易语言源码.rar 易语言源码有序二分法查找易语言源码.rar ...
### 二分法数据查找C语言实现 #### 知识点概述 二分查找(Binary Search),也称为折半查找,是一种在有序数组中查找某一特定元素的搜索算法。二分查找采用分而治之的策略,通过将查找区间分成前后两部分来减少...