`
holoblog
  • 浏览: 1270482 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:19636
文章分类
社区版块
存档分类
最新评论

算法基础编之二分法

 
阅读更多

我们在编程过程中总会涉及一些算法问题,然而多数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

分享到:
评论

相关推荐

    java算法——二分法查找

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

    二分法算法

    自己设计的matlab算法,针对二分法的

    算法基础+算法强化+算法系统提升视频.zip

    jiuzhang_算法基础班2a_二分法 jiuzhang_算法基础班_2b_二分法 九章_算法基础班_二叉树与分治法(1) 九章_算法基础班_二叉树与分治法 算法 宽搜 2 算法基础 深度优先搜索 算法基础班 宽度优先搜索 1 4,算法强化 ...

    九章算法之二分法(Binary Search)

    九章算法之二分法(Binary Search) 适合找工作的小伙伴

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

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

    算法-分治- 二分法(包含源程序).rar

    **二分法(Binary Search)**,又称为折半搜索或二分查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是利用分治策略,将问题规模不断减半,直到找到目标值或者确定目标不存在。二分法在计算机科学中...

    二分法算法实现 示例

    ### 二分法算法实现详解 #### 知识点一:二分法基本概念与原理 二分法,又称折半查找法,是一种在有序数组中查找特定元素的高效算法。其基本思想是通过将搜索区间不断折半,从而快速定位目标值的位置。具体步骤...

    比二分法更快的算法-算法问题:扔杯子的几种方法,排序算法数据结构 最快的排序算法

    如果我们使用二分法,从50层楼开始扔杯子,如果杯子碎了,则在1-49层楼中继续扔,如果杯子没碎,则在51-100层楼中继续扔。这样,我们可以在最坏的情况下需要扔50次。但是,如果我们使用快速排序的思想,可以将楼层...

    二分法排序算法 C语言实现

    根据给定的文件信息,我们可以总结出以下关于“二分法排序算法C语言实现”的相关知识点: ### 1. 二分法搜索算法原理 二分法搜索算法,也称为折半查找算法,是一种在有序数组中查找特定元素的搜索算法。其基本思想...

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

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

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

    python实现三种简单优化算法

    计算机二分法的算法步骤-五大常用算法之一:分治算法,算法数据结构 五大常用算法

    计算机二分法的算法步骤-五大常用算法之一:分治算法,算法数据结构 五大常用算法 分治算法是一种常用的算法设计方法,它将一个规模为n的问题P分解成k个规模较小的子问题,这些子问题相互独立,并且与原来的问题...

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

    二分法查找,又称折半查找,是一种在有序数组中搜索特定元素的高效算法。它通过不断缩小搜索范围,将查找复杂度降低到对数级别,显著提高了查找效率。在这个资源包中,我们重点关注的是使用C语言实现的二分法查找...

    用javascript实现的十大排序算法详解

    在编程领域,排序算法是计算机科学的基础之一,它在数据处理和分析中起着至关重要的作用。本篇文章将深入探讨如何使用JavaScript实现十大经典排序算法,帮助开发者更好地理解和运用这些算法。 1. 冒泡排序(Bubble ...

    matlab二分法算法

    matlab二分法算法,实测可用,直接调用该函数即可得到目标解

    算法合集之二分法统计问题PPT学习教案.pptx

    本PPT主要探讨如何利用二分法来解决统计问题,特别是在线段树的基础上进行动态维护和计算。 线段树是一种数据结构,用于高效地处理区间查询和修改操作。它特别适用于处理一定范围内的计数问题,这些问题通常描述...

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

    在编程领域,尤其是在Java开发中,排序算法是基础且至关重要的知识。无论是处理数据库查询、数据分析,还是优化程序性能,熟练掌握各种排序算法都显得尤为关键。本资料包聚焦于"Java常用排序算法"和"程序员必须掌握...

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

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

    二分法直接插入排序算法

    直接插入排序是一种基础的排序算法,它的工作原理是将未排序的元素逐个与已排序的部分进行比较,找到合适的位置并插入。而“二分法直接插入排序”则是对传统直接插入排序的一种优化,它利用了二分查找的特性来减少在...

    折半查找算法(二分法).ppt

    折半查找算法(二分法).ppt

Global site tag (gtag.js) - Google Analytics