本周的任务是用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

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

  1. 递归算法和迭代算法_Java中没有递归的二进制搜索–迭代算法

    递归算法和迭代算法 这周的任务是用Java实现二进制搜索 ,您需要编写迭代和递归二进制搜索算法 . 在计算机科学中,二进制搜索或半间隔搜索是一种分而治之的算法,用于在排序数组中定位项目的位置. 二进制 ...

  2. java中的递归函数调用函数_Java中函数的递归调用

    说到递归,java中的递归和C语言中也是很相似的,在Java中,递归其实就是利用了栈的先进后出的机制来描述的. public class HelloWorld { public static void ...

  3. java中char占的二进制,java数据类型与二进制详细介绍

    java数据类型与二进制详细介绍 在java中 Int 类型的变量占 4个字节 Long 类型的变量占8个字节 一个程序就是一个世界,变量是这个程序的基本单位. Java基本数据类型 1. 整数类型 ...

  4. c语言再大文件内搜索,C语言中大型磁盘文件的二进制搜索

    这个问题经常在StackOverflow上重复出现,但我已经阅读了所有以前的相关答案,并对问题略有不同. 我有一个包含4.75亿行相同大小的23Gb文件,每行包含一个40个字符的哈希码,后跟一个标识符 ...

  5. 使用图像播放Java中的一种技巧-搜索图像,将图像转换为文本,隐藏数据

    介绍 在本文中,我将为您提供一种处理图像文件的方法. 本文将使您深入了解Java中的一些技巧,以便您可以隐藏图像内的敏感信息,将完整图像隐藏为文本,在目录内搜索特定图像,并最小化图像的大小. 但是,这 ...

  6. Java中的byte和二进制梳理

    java byte 和Byte(来自https://www.cnblogs.com/SevenwindMa/p/3671057.html) java的基本数据类型中有byte这种,byte存储整型数据 ...

  7. java中数组的数据结构_Java数据结构与算法(一)--数组

    目录 数组是应用最广泛的数据存储结构.它被植入大部分的编程语音.在Java中数组用来存放一种类型的集合. 1.数组的介绍 ①数组的声明 第一种方式: int[] arr = new int[10];/ ...

  8. Java中的递归详解

    文章目录 概述 递归累加求和 计算1 ~ n的和 代码执行图解 递归求阶乘 递归打印多级目录 综合案例 文件搜索 文件过滤器优化 Lambda优化 概述 递归:指在当前方法内调用自己的这种现象. 递归 ...

  9. java 二进制 定义_在Java中,我可以用二进制格式定义一个整数常量吗?

    所以,随着Java SE 7的发布,二进制符号标准开箱即用.语法是非常直接和明显的,如果你有一个良好的理解二进制: byte fourTimesThree = 0b1100; byte data = ...

最新文章

  1. 系统维护For流星无语
  2. pdf在线转换图片该如何进行操作
  3. @Transactional注解事务不回滚不起作用无效
  4. kmd缅甸计算机学校,缅甸福星孔子课堂博睿国际学校分课堂举行2017年春节联欢会...
  5. Servlet异常处理
  6. 设计模式笔记十八:中介者模式
  7. 计算机一级考试第一套题电子表格,计算机等级考试一级上机试题(第一套)
  8. 2-ESP8266 SDK开发基础入门篇--点亮一个灯
  9. 修改Wordpress插件---advanced-access-manager.1.7.3---
  10. Linux-lsof
  11. webstorm 搜狗输入法,输入汉字变成繁体字
  12. 项目合同与劳务合同的区别
  13. mathmatica使用入门
  14. RobotFrameWork(二)Ride简单使用及快捷键
  15. NexusJar包私服
  16. 手写数字识别的实现(案例)
  17. 手机如何打开开发者选项
  18. 人脸识别无人机燃爆《战狼2》 它真的存在吗?
  19. 小米12pro天玑版和小米12pro哪个值得买 两者配置对比
  20. 数字资产普及,如何规避加密风险?

热门文章

  1. SpringCloud Ribbon(二)之自定义负载均衡策略IRule
  2. mybatis3中@SelectProvider的使用技巧
  3. Hadoop入门(五)IO操作
  4. MySQL group_concat()函数
  5. Vue.js2.0开发环境搭建(一)
  6. jmap, jhat, jvisualvm:java堆内存对象分析利器
  7. 2018年不能错过的 14 个 Java 库
  8. Java 面试题经典 77 问
  9. 试编写算法,设任意n个整数存放于数组A[1...n]中,将所有正数排在所有负数前面(要求:算法时间复杂度为O(n))
  10. 廖雪峰python教程整理笔记_廖雪峰python教程笔记(一)