java数组之binarySearch查找

/**
 * 1.如果找到目标对象则返回<code>【公式:-插入点-1】</code>
 * 插入点:第一个大与查找对象的元素在数组中的位置,如果数组中的所有元素都小于要查找的对象,“插入点”就等于a.size()
*@date:2018年6月22日
*@author:zhangfs

*/
public class ArraysBinarySearch {

    public static void main(String[] args) {
        int[] a= {9,8,7,1,2,6,4};
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));

        int result=Arrays.binarySearch(a, 3);

        System.out.println("find value is:"+result);
    }
}output:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco }


[1, 2, 4, 6, 7, 8, 9]


find value is:-3

 

注意事项:

如果对未排序的数组进行binarySearch,结果将导致不准确,读者可以自行试验一下

原文地址:https://www.cnblogs.com/zhangfengshi/p/9215899.html

时间: 2024-11-02 16:18:13

java数组之binarySearch查找的相关文章

java数组回顾---线性查找最大值最小值---二分查找

import java.util.Scanner; public class ArrayDemo { public static void main(String []args) { //------------------------------------------------------- //线性查找 int [] num ={10,20,30,40,50}; Scanner input1 = new Scanner(System.in); System.out.println("请输

Java 数组 之 一维数组 折半查找 BinarySearch

http://www.verejava.com/?id=16992676834929 /* 用二分法: 从一个已经排好序的数组scores中查找给定的值 value 的索引位置 思路: 1. 先初始化最低位 low=0, 最高位high=scores.length-1 2. 求出中间位 mid=(low+high)/2 的值 scores[mid] 3. 将中间位scores[mid]与value比较 如果scores[mid]==value 说明找到了打印当前索引mid, 如果scores[m

java 数组比较,元素的比较,Comparable,Comparator比较的应用实现,排序,查找示例

java 数组比较,元素的比较,自定义Comparator的实现,排序,查找示例 package org.rui.array.compar; import java.util.Arrays; import java.util.Random; import org.rui.generics.anonymity.Generator; /** * 程序设计的基本目标是"将保持不变的事物与会发生改变的事物相分离" * 而这是,不变的是通用的排序算法,变化的是各种对象相互比较的方式, * 因此,

java 13-1 数组高级二级查找

查找: 1.基本查找:数组元素无序(从头找到尾) 2.二分查找(折半查找):数组元素有序 pS:数组的元素必须有顺序,从小到大或者从大到小.以下的分析是从小到大的数组 二分查找分析: A:先对数组进行对半(也就是设置 min索引为0,max索引为arr.length-1,然后对半的 索引mid为(min+max)/2) B:把所需要查找的数据x跟arr[mid]进行对比 a:两者的值相等,就返回mid索引 b:两者不等: 1.如果 x > arr[mid],则 min索引的值改变为:min =

java实现——003二维数组中的查找

1 import java.util.Scanner; 2 3 public class T003 { 4 5 public static void main(String[] args) { 6 Scanner in = new Scanner(System.in); 7 int rows = 0, cols = 0; 8 rows = in.nextInt(); 9 cols = in.nextInt(); 10 int a[][] = new int[rows][cols]; 11 for

题目一:使用Java实现二维数组中的查找

考点:数组 题目:二维数组中的查找 描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 方式一:选择从左下角开始搜寻,因为选择在左下角搜寻的话,如果目标值大于搜索值,那么就向右继续搜索,如果目标值小于搜索值,那么就向上继续搜索.在左上角就无法形成这样的判断.时间复杂度为:0(lgn) package cn.imooc.java2; public class Solution

Java——Java数组

数组对于每一门编辑应语言来说都是重要的数据结构之一. 声明数组变量 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法: double[] myList; // 首选的方法 或 double myList[]; // 效果相同,但不是首选方法 // 建议使用dataType[] arrayRefVar 的声明风格声明数组变量. dataType arrayRefVar[] 风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言. 创

Java中常用的查找算法——顺序查找和二分查找

Java中常用的查找算法——顺序查找和二分查找 一.顺序查找: a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位. b) 图例说明: 原始数据:int[] a={4,6,2,8,1,9,0,3}; 要查找数字:8 代码演示: import java.util.Scanner; /* * 顺序查找 */ public class SequelSearch { public static void main(String[] arg

Java中的二分法查找算法

[ 什么是二分查找 ]  二分查找又称为折半查找,该算法的思想是将数列按序排列,采用跳跃式方法进行查找,即先以有序数列的中点位置为比较对象, 如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分.以此类推不断缩小搜索范围. [ 二分查找的条件 ] 二分查找的先决条件是查找的数列必须是有序的. [ 二分查找的优缺点 ] 优点:比较次数少,查找速度快,平均性能好: 缺点:要求待查数列为有序,且插入删除困难: 适用场景:不经常变动而查找频繁的有序列表. [ 算法步骤描述 ] ①