我们在编程过程中总会涉及一些算法问题,然而多数JAVA程序员都很难在算法方面进行突破,很明显的列子就是我了,做了这么多年的程序开发,自己的算法还是一塌糊涂,所以今天开始,对算法准备进行突破,然而为了表示自己的每天在算法上的进步,所以,我想把每个点滴给写下来:
今天我没事就写了一个二分法查找的算法,OK,首先我们要对其进行分析,在查找算法中,二分法查找算法的效力还是很高,我写个简单的列子来对比一下吧,比如我们使用之基本的算法方式来进行查找数组中的某个数,代码如下:
public class SearchDemo{
public static void main(String args[]){
//基本查询方式:请详细看注释
int[] baseData = new int[]{2,3,4,5,6,3,2,3,4,5,6,7,8,343,2323,23,2,23,211,23,2,23};//条件数组
int index = 23;//所需查找的数据
baseSearch(baseData,index);//对其基本的方法进行测试
System.out.println("-----------------------------");
//使用二分法进行查找,详细看注释
int[]bearSearch = new int[]{3,23,3,4,4,53,32,23,23,23,23,23,23,23,23,23,3,3,5,53,5,5,45,54,45,34,43};
int index 54;
bearSearch(bearSearch,index);
}
//这个方法是最基本的查询方式,这种查询方法相对来说性能会很差的,比如说,如果我们要查询的数字才我100万的位置,此时,我们使用这种方法可能需要查找100万次,也就是说这种查询方式会挨个按顺序进行查询,所以是不推介使用的
public static int baseSearch(int[] arr,int index){
for(int i = 0;i<arr.length;i++){
if(arr[i] == index){
return index;
}
}
return -1;
}
//这个方法使用二分查找法,相对来说解决了上面多数据时的查找所存在的问题,也就是在多数据时相对减少了查询次数,并优化了查找的方式
public static int bearSearch(int[] arr,int index){
int low = 0; //声明一个INT变量来表示数组的最小的小标值并初始化为0
int hight = 0; //声明一个INT变量来表示数组的最大下标值并对其初始化为0
int middle = 0;//声明一个INT变量来表示数组的中间数并对其初始化为0
while(low < hight){
middle = (low + hight) / 2;//对middle来进行中值设置
if(arr[middle] == index){
return middle;//如果第一次查找到的话就直接返回
}
if(index < arr[middle]){
hight = middle - 1;//如果一次查找的值小于其中值的话,我们就需要抛弃其中值之后的数值,在依次继续以中值的方式来进行查找
}
if(index > arr[middle]){
low = middle + 1;//如果查找的值大于其中值的话,我们就需要抛弃其中值之前的所有数值,再依次继续以中值的方式来进行查找
}
}
return -1;//判断如果没有查找的对其返回处理
}
}
好了以上就是关于使用二分法查找的算法代码与注释详解,如有问题可来电询问:jiangshide@hotmail.com
分享到:
相关推荐
二分法查找 *进行二分法查找的前提是数组已有序 *查找范围的上下界
自己设计的matlab算法,针对二分法的
jiuzhang_算法基础班2a_二分法 jiuzhang_算法基础班_2b_二分法 九章_算法基础班_二叉树与分治法(1) 九章_算法基础班_二叉树与分治法 算法 宽搜 2 算法基础 深度优先搜索 算法基础班 宽度优先搜索 1 4,算法强化 ...
九章算法之二分法(Binary Search) 适合找工作的小伙伴
本文将深入探讨Java中常用的八大排序算法以及二分法查找,旨在帮助算法爱好者和开发人员提升解决问题的能力。 首先,让我们来看Java中的八大排序算法: 1. 冒泡排序:这是一种简单的排序方法,通过重复遍历待排序...
**二分法(Binary Search)**,又称为折半搜索或二分查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是利用分治策略,将问题规模不断减半,直到找到目标值或者确定目标不存在。二分法在计算机科学中...
### 二分法算法实现详解 #### 知识点一:二分法基本概念与原理 二分法,又称折半查找法,是一种在有序数组中查找特定元素的高效算法。其基本思想是通过将搜索区间不断折半,从而快速定位目标值的位置。具体步骤...
如果我们使用二分法,从50层楼开始扔杯子,如果杯子碎了,则在1-49层楼中继续扔,如果杯子没碎,则在51-100层楼中继续扔。这样,我们可以在最坏的情况下需要扔50次。但是,如果我们使用快速排序的思想,可以将楼层...
根据给定的文件信息,我们可以总结出以下关于“二分法排序算法C语言实现”的相关知识点: ### 1. 二分法搜索算法原理 二分法搜索算法,也称为折半查找算法,是一种在有序数组中查找特定元素的搜索算法。其基本思想...
二分查找算法,又称折半查找算法,是一种在有序数组中快速定位目标元素的搜索算法。它的基本思想是将待查找的元素与数组中间位置的元素进行比较,根据比较结果来决定是在数组的左半部分还是右半部分继续查找。通过...
python实现三种简单优化算法
计算机二分法的算法步骤-五大常用算法之一:分治算法,算法数据结构 五大常用算法 分治算法是一种常用的算法设计方法,它将一个规模为n的问题P分解成k个规模较小的子问题,这些子问题相互独立,并且与原来的问题...
二分法查找,又称折半查找,是一种在有序数组中搜索特定元素的高效算法。它通过不断缩小搜索范围,将查找复杂度降低到对数级别,显著提高了查找效率。在这个资源包中,我们重点关注的是使用C语言实现的二分法查找...
在编程领域,排序算法是计算机科学的基础之一,它在数据处理和分析中起着至关重要的作用。本篇文章将深入探讨如何使用JavaScript实现十大经典排序算法,帮助开发者更好地理解和运用这些算法。 1. 冒泡排序(Bubble ...
matlab二分法算法,实测可用,直接调用该函数即可得到目标解
本PPT主要探讨如何利用二分法来解决统计问题,特别是在线段树的基础上进行动态维护和计算。 线段树是一种数据结构,用于高效地处理区间查询和修改操作。它特别适用于处理一定范围内的计数问题,这些问题通常描述...
在编程领域,尤其是在Java开发中,排序算法是基础且至关重要的知识。无论是处理数据库查询、数据分析,还是优化程序性能,熟练掌握各种排序算法都显得尤为关键。本资料包聚焦于"Java常用排序算法"和"程序员必须掌握...
本文将深入探讨Java中的冒泡排序、插入排序以及二分法查找这三种基础算法,这些都是面试时经常会被问到的技术点。 首先,让我们从冒泡排序开始。冒泡排序是一种简单直观的排序算法,它重复地遍历待排序的数列,一次...
直接插入排序是一种基础的排序算法,它的工作原理是将未排序的元素逐个与已排序的部分进行比较,找到合适的位置并插入。而“二分法直接插入排序”则是对传统直接插入排序的一种优化,它利用了二分查找的特性来减少在...
折半查找算法(二分法).ppt