Java中没有递归的二进制搜索–迭代算法

本周的任务是用Java实现二进制搜索 ,您需要编写迭代和递归二进制搜索算法 。 在计算机科学中,二进制搜索或半间隔搜索是一种分而治之的算法,用于定位项目在排序数组中的位置。 二进制搜索通过将输入值与数组的中间元素进行比较来工作。 比较确定元素是否等于输入,小于输入或大于输入。 当要比较的元素等于输入时,搜索将停止并通常返回该元素的位置。 如果元素不等于输入,则进行比较以确定输入是否小于或大于元素。 然后,根据算法的不同,算法重新开始,但仅搜索数组元素的顶部或底部子集。 如果输入不在数组内,则算法通常会输出一个唯一的值来表明这一点。

二进制搜索算法通常将每次连续迭代要检查的项目数量减半,从而在对数时间内定位给定的项目(或确定其不存在)。 二进制搜索是一种分而治之的搜索算法。 它通过将输入集分成两半然后应用算法并重复相同的步骤直到完成工作来工作。

二进制搜索

Java中的二进制搜索实现

该算法是递归实现的。 另外,有关Java中的二进制搜索实现的一个有趣的事实是,著名的作者Joshua Bloch
有效的Java书籍在“ java.util.Arrays”中编写了二进制搜索。

import java.util.Arrays;
import java.util.Scanner;
/**
* Java program to implement Binary Search. We have implemented Iterative
* version of Binary Search Algorithm in Java
*
* @author Javin Paul
*/
public class IterativeBinarySearch {public static void main(String args[]) {int[] list = new int[]{23, 43, 31, 12};int number = 12;Arrays.sort(list);System.out.printf("Binary Search %d in integer array %s %n", number,Arrays.toString(list));binarySearch(list, 12);System.out.printf("Binary Search %d in integer array %s %n", 43, Arrays.toString(list));binarySearch(list, 43);list = new int[]{123, 243, 331, 1298};number = 331;Arrays.sort(list);System.out.printf("Binary Search %d in integer array %s %n", number, Arrays.toString(list));binarySearch(list, 331);System.out.printf("Binary Search %d in integer array %s %n", 331, Arrays.toString(list));binarySearch(list, 1333);// Using Core Java API and Collection framework// Precondition to the Arrays.binarySearchArrays.sort(list);// Search an elementint index = Arrays.binarySearch(list, 3);}/*** Perform a binary Search in Sorted Array in Java** @param input* @param number* @return location of element in array*/public static void binarySearch(int[] input, int number) {int first = 0;int last = input.length - 1;int middle = (first + last) / 2;while (first <= last) {if (input[middle] < number) {first = middle + 1;} else if (input[middle] == number) {System.out.printf(number + " found at location %d %n", middle);break;} else {last = middle - 1;}middle = (first + last) / 2;}if (first > last) {System.out.println(number + " is not present in the list.\n");}}
}Output
Binary Search 12 in integer array [12, 23, 31, 43]
12 found at location 0
Binary Search 43 in integer array [12, 23, 31, 43]
43 found at location 3
Binary Search 331 in integer array [123, 243, 331, 1298]
331 found at location 2
Binary Search 331 in integer array [123, 243, 331, 1298]
1333 is not present in the list.

这就是如何在Java中实现迭代二进制搜索的全部内容。

感谢您到目前为止阅读本文。 如果您喜欢这篇文章,请与您的朋友和同事分享。 如果您有任何疑问或反馈,请留言。

翻译自: https://www.javacodegeeks.com/2018/06/binary-search-java-without-recursion.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十三届蓝桥杯A组省赛填空程序真题集

文章目录试题 A: 裁纸刀(填空)试题 B: 寻找整数&#xff08;填空&#xff09;试题 C: 求和试题 D: GCD试题 E: 蜂巢试题 F: 全排列的价值试题 G: 青蛙过河试题 H: 因数平方和试题 I: 最优清零方案试题 J: 推导部分和试题 A: 裁纸刀(填空) 本题总分&#xff1a;5 分 【问题描述…

拉格朗日乘子法

拉格朗日乘子法 (Lagrange multipliers)是⼀种寻找多元函数在⼀组约束下的极值的⽅法。 通过引⼊拉格朗⽇乘⼦&#xff0c;可将有 d 个变量与 k 个约束条件的最优化问题转化为具有 d k 个变量的⽆约束优化问题求解。 本⽂希望通过⼀个直观简单的例⼦尽⼒解释拉格朗⽇乘⼦法和…

双闭环直流调速系统matlab/simulink仿真

前些天发现了十分不错的人工智能学习电子书&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记&#xff08;或csds992022&…

采样与保持仿真实验(计控实验一simulink)

一、实验目的与要求 1、了解数/模转换器的零阶保持器作用。 2、验证零阶保持器在控制系统中的作用。 3、验证采样周期对系统稳定性的影响。 4、学习控制系统计算机辅助设计软件MATLAB及其仿真环境SIMULINK的使用。 二、仿真软硬件环境 PC机&#xff0c;MATLAB R2012b。 三、…

微分与平滑仿真实验(计控实验二simulink)

一、实验目的与要求 1、了解微分对采样噪音的灵敏响应。 2、了解平滑算法抑制噪音的作用。 3、进一步学习MATLAB及其仿真环境SIMULINK的使用。 二、仿真软硬件环境 PC机&#xff0c;MATLAB R2012b。 三、实验原理 如图微分加在正反馈输入端&#xff0c;计算机用D(Z)式进行…

积分分离PID控制仿真实验(计控实验三simulink)

一、实验目的与要求 1、学会PID三个系数的选取。 2、了解积分分离值的模拟实验选取。 3、掌握SIMULINK的仿真方法。 二、仿真软硬件环境 PC机&#xff0c;MATLAB R2012b。 三、实验原理 如图&#xff0c;R为输入&#xff0c;C为输出。计算机不断采入误差E&#xff0c;进行…

数电实验三-点亮四个数码管(Multisim和Basys3)

特别说明&#xff1a;该系列内容均是本人实验记录&#xff0c;无盗取侵权之嫌&#xff0c;仅供参考&#xff0c;请多动手实践。 一、实验目的 详见报告 二、实验仪器 详见报告 三、实验内容详解 以16位拨码开关和3个按钮为输入&#xff0c;四个七段式数码管为输出&#xff0…

wso2 esb_使用WSO2 ESB构建制造服务总线(MSB)

wso2 esb在进入本主题之前&#xff0c;我想介绍一些制造业中常用的术语。 制造执行系统&#xff08;MES&#xff09;一词是AMR Research在1990年提出的&#xff0c;从先进的制造计算机信息系统的发展到现在&#xff0c;MES概念已经发展了近三十年。 以下是制造执行系统协会&am…

数电实验四-触发器(Multisim和Basys3)

特别说明&#xff1a;该系列内容均是本人实验记录&#xff0c;无盗取侵权之嫌&#xff0c;仅供参考&#xff0c;请多动手实践&#xff01; 一、实验目的 详见报告 二、实验仪器 1.数字电路实验箱 2.器材 三、实验内容详解 1.基本RS触发器逻辑功能的测试 基本RS触发器由两个与…

基于MATLAB的简易音乐数字均衡器设计(不采用MATLAB内置函数实现)

音乐数字均衡器 MATLAB GUI界面 不同MP3播放器的均衡器设置不尽相同,以两个韩系高端品牌iRiver和iAUDIO为例,两者的EQ均衡器同分为5个频段,但是频段的划分并不一样。iRiver的产品EQ分为五段:50Hz档、200Hz档、1KHz档、3KHz档和14KHz档,每段可以进行10级调节:-15dB、-12d…

微信小程序消息推送通知模板id生成获取

前些天发现了十分不错的人工智能学习电子书&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 1、首先在微信公众平台登录对应的微信小程序。然后点击功能…

Windows10+VS2017下GSL1.8_x86和sundials2.5.0配置及GITHUB项目schneider_et_al_2016_animaldiversity编译运行

一、GSL库下载 GSL简介及下载地址:GSL - GNU Scientific Library GSL FTP下载地址:GSL FTP GSL for Windows地址:Gsl for Windows 文件主要有: 以上链接中关于GSL1.8版本的所有文件,均已下载好且打包如下,可直接下载,本文主要分享编译链接过程中遇到的问题,避免看到这…

数电实验五-秒表初步(Multisim和Basys3)

特别说明&#xff1a;该系列内容均是本人实验记录&#xff0c;无盗取侵权之嫌&#xff0c;仅供参考&#xff0c;请多动手实践。 一、实验目的 详见报告 二、实验环境 详见报告 三、实验内容详解 基础要求&#xff1a;以Basys3板载的100MHz时钟为输入&#xff0c;4位7段式数码…

数电实验六-秒表进阶(Multisim和Basys3)

特别说明&#xff1a;该系列内容均是本人实验记录&#xff0c;无盗取侵权之嫌&#xff0c;仅供参考&#xff0c;请多动手实践。 一、实验目的 详见报告 二、实验环境 详见报告 三、实验内容详解 基础要求&#xff1a;在实验五的基础上&#xff0c;用 BTNC 按键控制秒表的工作…

云原生架构总览,发展定义架构及趋势

随着云计算发展的成熟和企业需求的推动&#xff0c;云原生技术和理念得到了用户的广泛接受&#xff0c;云原生应用场景不断丰富&#xff0c;云原生正在成为云上的必然趋势。 文章目录一、云原生技术发展二、云原生的定义三、云原生应用四、云原生架构原则及常用模式五、云原生未…

最小拍有纹波系统仿真实验(计控实验四simulink)

一、实验目的与要求 &#xff11;、掌握最小拍有纹波系统的计算机控制脉冲传函D(z)的设计方法。    &#xff12;、了解该系统对三种典型输入的适应性。 &#xff13;、掌握SIMULINK的仿真方法。 二、仿真软硬件环境 PC机&#xff0c;MATLAB R2012b。 三、实验原理 如图 R为…

C语言实用算法系列之memcpy、memmove函数原理与实现

直接看代码 #include<stdio.h> #include<string.h> /*返回指向pDest的指针*/ void* MemCopy(void* pDest, const void* pSrc, int nCount) {char* p (char*)pDest;char* p1 (char*)pSrc;while (nCount--)*p *p1;return pDest; } /*返回指向pDest的指针&#xf…

最小拍无纹波系统仿真实验(计控实验五simulink)

一、实验目的与要求 1、掌握最小拍无纹波系统的计算机控制脉冲传函D(z)的设计方法。 2、掌握SIMULINK的仿真方法。 二、仿真软硬件环境 PC机&#xff0c;MATLAB R2012b。 三、实验原理 如图 R为输入&#xff0c;C为输出。计算机定时采样&#xff0c;计算误差E&#xff0c;按D…

Oracle ADF和Oracle Jet一起工作。 建筑模式

在本文中&#xff0c;我将考虑在Oracle ADF和Oracle Jet的组合之上实现应用程序的各种体系结构模式。 练习ADF的组织可能会考虑将Oracle Jet合并到现有项目中&#xff0c;以刷新外观并使其具有现代感和响应能力&#xff0c;并以新方式实施新功能。 它可能会考虑将Oracle Jet用于…

基本指令的编程练习-PLC认识实验-定时器/计数器功能实验

微信公众号&#xff1a;创享日记 发送关键词&#xff1a;plc1 免费获取完整无水印实验报告 【PLC认识实验】 一、实验目的 1.了解PLC软硬件结构及系统组成; 2.掌握PLC外围直流控制及负载线路的接法及上位计算机与PLC通信参数的设置; 3.了解编程软件的编程环境&#xff0c;掌握软…