-
2019-03-24 16:38:35
从头遍历:
没有约束条件
/*数组元素的查找方法*/ public static int getIndex(int[] arr,int key){ for(int i=0;i<arr.length;i++){ if(arr[i]==key){ return i; // 查找到该元素返回该元素在数组中的索引 } } return -1; // 没有查找到该元素返回-1 }
折半查找:
折半查找可以提高查找效率,但是必须要保证该数组是有序的数组。
第一种方式:
// 折半查找:前提条件该数组内的数据必须是有序的 public static int halfSearch(int[] arr,int key){ int min,max,mid; min=0; // 数组最小索引值 max=arr.length-1; // 数组最大索引值 mid=(min+max)/2; // 数组中间索引值 while(arr[mid]!=key){ if(arr[mid]>key){ max=mid-1; } if(arr[mid]<key){ min=mid+1; } // 查找完毕,该数组没有该元素返回-1 if(min>max){ return -1; } mid=(min+max)/2; } return mid; }
第二种方式:
// 折半查找:前提条件该数组内的数据必须是有序的 public static int halfSearch_2(int[] arr,int key){ int min=0,max=arr.length-1,mid; while(min<=max){ mid=(min+max)>>1; if(key>arr[mid]){ min=mid+1; } else if(key<arr[mid]){ max=mid-1; } else{ return mid; } } return -1; }
更多相关内容 -
Java数组元素的查找
2022-01-09 15:51:52数组元素查找的两种方法: 线性查找。 二分法查找。 二分法查找说明图: 代码部分: public class ArrayTest2 { public static void main(String[] args) { String[] arr = new String[]{"JJ","DD","MM",...数组元素查找的两种方法:
- 线性查找。
- 二分法查找。
二分法查找说明图:
代码部分:
public class ArrayTest2 { public static void main(String[] args) { String[] arr = new String[]{"JJ","DD","MM","BB","GG","AA"}; //数组的复制(区别于数组变量的赋值:arr1 = arr) String[] arr1 = new String[arr.length]; for(int i = 0;i < arr1.length;i++){ arr1[i] = arr[i]; } //遍历 for(int i = 0;i < arr.length;i++){ System.out.print(arr[i] + "\t"); } System.out.println(); //查找(或搜索) //线性查找: String dest = "BB"; boolean isFlag = true; for(int i = 0;i < arr.length;i++){ if(dest.equals(arr[i])){ System.out.println("找到了指定的元素,位置为:" + i); isFlag = false; break; } } if(isFlag){ System.out.println("很遗憾,没有找到的啦!"); } //二分法查找:(熟悉) //前提:所要查找的数组必须有序。 int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105,210,333}; int dest1 = -34; int head = 0;//初始的首索引 int end = arr2.length - 1;//初始的末索引 boolean isFlag1 = true; while(head <= end){ int middle = (head + end)/2; if(dest1 == arr2[middle]){ System.out.println("找到了指定的元素,位置为:" + middle); isFlag1 = false; break; }else if(arr2[middle] > dest1){ end = middle - 1; }else{//arr2[middle] < dest1 head = middle + 1; } } if(isFlag1){ System.out.println("很遗憾,没有找到的啦!"); } } }
总结:
- String 类型的相等比较要用 n1.equals(n2) 。
- 二分法的前提:所要查找的数组必须有序。
- 二分法取中点----(head+end)/2。
-
java实现的数组元素查找
2019-03-25 09:41:06java函数学习之查找函数使用,是在学习java过程中的一个小例子 -
java语言基础(一维数组练习):数组元素查找(查找指定元素第一次在数组中出现的索引)
2021-04-15 15:33:08/*需求:数组元素查找(查找指定元素第一次在数组中出现的索引)分析:A:定义一个数组,并静态初始化。B:写一个功能实现遍历数组,依次获取数组中的每一个元素,和已知的数据进行比较如果相等,就返回当前的索引值。*/.../*
需求:数组元素查找(查找指定元素第一次在数组中出现的索引)
分析:
A:定义一个数组,并静态初始化。
B:写一个功能实现
遍历数组,依次获取数组中的每一个元素,和已知的数据进行比较
如果相等,就返回当前的索引值。
*/
class ArrayTest5 {
public static void main(String[] args) {
//定义一个数组,并静态初始化
int[] arr = {200,250,38,888,444};
//需求:我要查找250在这个数组中第一次出现的索引
int index = getIndex(arr,250);
System.out.println("250在数组中第一次出现的索引是:"+index);
int index2 = getIndex2(arr,250);
System.out.println("250在数组中第一次出现的索引是:"+index2);
int index3 = getIndex2(arr,2500);
System.out.println("2500在数组中第一次出现的索引是:"+index3);
}
/*
需求:查找指定数据在数组中第一次出现的索引
两个明确:
返回值类型:int
参数列表:int[] arr,int value
*/
public static int getIndex(int[] arr,int value) {
//遍历数组,依次获取数组中的每一个元素,和已知的数据进行比较
for(int x=0; x
if(arr[x] == value) {
//如果相等,就返回当前的索引值。
return x;
}
}
//目前的代码有一个小问题
//就是假如我要查找的数据在数组中不存在,那就找不到,找不到,你就对应的返回吗?
//所以报错。
//只要是判断,就可能是false,所以大家要细心。
//如果找不到数据,我们一般返回一个负数即可,而且是返回-1
return -1;
}
public static int getIndex2(int[] arr,int value) {
//定义一个索引
int index = -1;
//有就修改索引值
for(int x=0; x
if(arr[x] == value) {
index = x;
break;
}
}
//返回index
return index;
}
}
标签:arr,int,元素,索引,查找,数组,250
来源: https://blog.csdn.net/lixue_yang/article/details/89060527
-
Java数组中查找元素的方法
2020-08-15 20:43:51binarySearch()方法提供多种重载形式,用于满足各种类型数组的查找需要。 1 binarySearch(Object[], Object key) 第一个参数: 要搜索的数组 第二个参数:要搜索的值 示例代码 import java.util.Arrays; import java....Arrays类
的binarySearch()
方法,可以使用二分搜索法来搜索指定的数组。该方法返回要搜索元素的索引值
。binarySearch()方法提供多种重载形式,用于满足各种类型数组的查找需要。在使用这个方法前,必须要对数组进行排序操作
1
binarySearch(Object[], Object key)
第一个参数: 要搜索的数组
第二个参数:要搜索的值示例代码
import java.util.Arrays; import java.util.Scanner; public class test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { // 数组a的大小 int n = sc.nextInt(); int a[] = new int[n]; for (int i = 0; i < n; i++) { a[i] = sc.nextInt(); } // 要查找的值 int x = sc.nextInt(); int index = Arrays.binarySearch(a, x); System.out.println(index); } } }
结论
[1] 搜索值是数组元素,从0开始计数,得搜索值的索引值; [2] 搜索值不是数组元素,且在数组范围内,从1开始计数,得“ - 插入点索引值”; [3] 搜索值不是数组元素,且大于数组内元素,索引值为 – (length + 1); [4] 搜索值不是数组元素,且小于数组内元素,索引值为 – 1。
2
binarySearch(Object[], int fromIndex, int toIndex, Object key)
这个重载的方法与上述方法相似,直接上结论
[1] 该搜索键在范围内,且是数组元素,由0开始计数,得搜索值的索引值; [2] 该搜索键在范围内,但不是数组元素,由1开始计数,得“ - 插入点索引值”; [3] 该搜索键不在范围内,且小于范围(数组)内元素,返回–(fromIndex + 1); [4] 该搜索键不在范围内,且大于范围(数组)内元素,返回 –(toIndex + 1)。
-
Java 数组元素的顺序查找
2021-05-29 22:13:42Java 数组元素的顺序查找顺序查找二分查找 顺序查找 顺序查找:也就是按顺序一位一位的查找,找到要查找数的索引(下标)。 示例: /** * 顺序查找 * * @param arr 查找的数组 * @param num 待查找的数 *... -
Java数组查找:数组查找指定元素(binarySearch())
2019-07-05 23:01:10查找数组是指从数组中查询指定位置的元素,或者查询某元素在指定数组中的位置。使用 Arrays 类的 binarySearch() 方法可以实现数组的查找,该方法可使用二分搜索法来搜索指定数组,以获得指定对象,该方法返回要搜索... -
Java 数组查找指定元素
2022-04-30 08:20:23对象数组a 表示要查找的数组元素 , 对象数组key 表示 要查找的值 其中,a 表示要搜索的数组,key 表示要搜索的值。如果 key 包含在数组中,则返回搜索值的索引;否则返回 -1 或“-插入点”。插入点指搜索键将要... -
Java在数组中查找指定元素的方法
2021-02-12 14:37:31Java在数组中查找指定元素我们是用什么方法来实现呢,是使用遍历查找还是使用其它的方法来查找呢,下面给各位整理了一些查找数组元素的例子。以下实例演示了如何使用 contains () 方法来查找数组中的指定元素:例子1... -
java 数组查找
2021-10-30 16:11:371、普通查找 对数组循环遍历,依次比较匹配,时查找算法中最基础,最简单的算法 int[] scores = {45, 62, 15, 78, 30}; int target = 62;... // 用要查找的目标,依次与数组中的每个元素进行比较 ... -
java数组中根据元素查找位置 索引
2021-02-25 20:13:59Arrays提供了一个方便查询的方法 :Arrays.binarySearch();public static void main(String[] args) {// TODO Auto-generated method stubString[] arrays = new String[]{"a","b","c","d","e","fff","g","h","i",... -
Java数组的查找(线性查找 / 二分查找)超详细
2019-05-16 20:10:36public class 数组的查找算法1 { public static void main(String[] args) { //目标数组 int[] arr = new int[] {2,3,4,5,6,8,4,7,0}; //目标元素 int target = 8; //目标元素所在的下标 int ... -
Java数组元素查找 接收并打印一个未知长度的数组
2017-06-25 22:06:35import java.util.Scanner; //****************************************************************************// //作者认为该程序最主要的功能是可以实现<<接收并打印一个未知长度的数组>&... -
Java在数组中查找指定元素
2021-02-27 20:05:20以下实例演示了如何使用 contains () 方法来查找数组中的指定元素:import java.util.ArrayList;public class Main {public static void main(String[] args) {ArrayList objArray = new ArrayList();ArrayList ... -
java数组中如何查找元素的位置?
2021-02-12 13:52:20就拿我们最近学习的java数组中,想要对元素查找可以选择binarySearch的方法,不过这个用法必须要先对数组进行排序。接下来就java中使用binarySearch查找元素的方法带来详解。1、binarySearch概念binarySearch()方法... -
java在数组里查找想要的元素与元素的位置
2021-11-30 22:13:57java 在数组里查找字母,数字等,并输出元素的所在位置! -
java中删除 数组中的指定元素方法
2020-08-31 17:00:55下面小编就为大家带来一篇java中删除 数组中的指定元素方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
Java中高效的判断数组中某个元素是否存在详解
2020-09-01 05:28:30相信大家在操作Java的时候,经常会要检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作。同时,这个问题在Stack Overflow中也是一个非常热门的问题。本文将分析几种常见用法... -
Java 实例 - 在数组中查找指定元素
2021-03-11 15:26:05以下实例演示了如何使用 contains () 方法来查找数组中的指定元素:/*author by w3cschool.cc文件名:Main.java*/import java.util.ArrayList;public class Main {public static void main(String[] args) {... -
java数组元素查找:输入10个数,保存在一个数组中,在数组中查找某个数字,给出是否找到信息,如果找到了...
2020-05-12 19:59:44java数组元素查找: 通过p的值来判断是否找到:for循环判断用户输入的值是否和其中元素相等, 只要有相等的值,p就会被下标赋值,而下标i>=0,所以p>=0.只要是P被赋值了,说明其中肯定有相同的元素;p没有被... -
JAVA数组字符串查找
2022-01-24 20:47:36数组字符串查找 -
Java二维数组查找功能代码实现
2020-08-19 02:30:12主要介绍了Java二维数组查找功能代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
java查找数组某元素第一次出现的下标
2021-06-20 16:15:03public class DemoArrayIndex { public static void main(String[] args) { int[] scores ={12,3,4,45,2,43,564,3,-54};... //查询数组元素的下标 public static int index(int[] arr,int num){ int ind -
java中的数组元素查找
2018-04-27 20:37:10数组元素查找有很多中方法,我们先来看最简单的一种public class Ac{ public static void main(String [] args){ int [] numbers={1,2,3,4,5,6,7,8,9,10}; int data=8; for(int number : numbers){ System... -
Java 查找数组中重复元素 Java查找数组中不重复的元素
2021-08-04 16:06:52Java 查找数组中重复元素 Java查找数组中不重复的元素 一、查找数组中重复的元素 1、有这么一个数组 arr ,元素分别是: 1,2,3,2 int [] arr = {1 , 2 , 3 , 2 }; 2、使用Set集合查找重复元素,利用Set集合的... -
Java通过方法查找元素在数组中的位置(允许重复元素)
2018-01-19 01:23:03String[] arr = new String[]{"a","b","c","d","e","eeee","f","g","a","h"}; Integer[] arr1 = new Integer[]{22,33,44,55,6,7,22,88,999}; searchOne(arr, "a"); searchOne(arr1, 33);...33在被查询数组的下标为:1 -
java实现:在数组中查找元素是否存在
2018-10-30 16:38:17将数组中每个元素和要查找的内容比较,一旦找到,将flag改为true(找到了),不再继续比较,break退出循环 根据flag的boolean值,判断查找的结果 package com.array.test; import java.util.Scanner; //在数组中... -
Educoder-学习-Java数组之一维数值数组之查找Key值
2021-11-22 23:26:58Scanner与数组的灵活运用 折半查找法 顺序查找法 通关源码 import java.util.Scanner; public class FindTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int... -
简单二分查找(Java数组)
2022-04-01 21:42:57数组——简单二分查找 二分查找:也叫折半查找( Binary Search ), 假设表中元素是按升序排列,将表中间位置记录的数与查找数比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果...