数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。 基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。
首页 > 大数据 > Hadoop > java语言实现数组搜索
数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。 基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。
首先打开eclipse
新建一个java项目,名字随意起
名字起好后,点击完成
右键点击项目名称,新建,类
类的名字叫TextArraySearch
包的名字叫 com.zf.s2
点击完成
首先声明一个包,导入类
package com.zf.s2;//创建一个包
import java.util.Arrays;
运用递归和二分法搜索数组元素的类
public class TextArraySearch {
//运用递归和二分查找特定整数在整型数组中的位置
public static int binarySearch1(int[] array, int index, int beginIndex,
int endIndex) {
int midIndex = (beginIndex + endIndex) / 2;
if (index < array[beginIndex] || index > array[endIndex]
|| beginIndex > endIndex)//判断要搜索的数字是否合理
return -1;
if (index < array[midIndex]) {//搜索数字位于数组前半部分
return binarySearch1(array, index, beginIndex, midIndex - 1);//运用递归
} else if (index > array[midIndex]) {//搜索数字位于数组后半部分
return binarySearch1(array, index, midIndex + 1, endIndex);//运用递归
} else {
return midIndex;//搜索数字位于数组中间
}
}
运用非递归和二分查找特定整数在整型数组中的位置
public static int binarySearch2(int[] array, int index) {
int beginIndex = 0;//起始位置,指的是元素下标
int endIndex = array.length - 1;//结束位置
int midIndex = -1;
if (index < array[beginIndex] || index > array[endIndex]
|| beginIndex > endIndex)//判断要搜索的数字是否合理
return -1;
//循环判断,根据起始位置与结束位置是否相等
while (beginIndex <= endIndex) {
midIndex = (beginIndex + endIndex) / 2;//获得数组中间位置
if (index < array[midIndex]) {//搜索数字位于数组前半部分
endIndex = midIndex - 1;//重新定位结束位置
} else if (index > array[midIndex]) {//搜索数字位于数组后半部分
beginIndex = midIndex + 1;//重新定位起始位置
} else {
return midIndex;//搜索数字位于数组中间
}
}
return -1;
}
主函数
public static void main(String []args){//java程序的主入口处
int []array=new int[]{12,3,2,18,24,15,20};//声明数组并初始化
int number=18;//声明变量
int num=1;
Arrays.sort(array);//二分法搜索元素之前必须对数组进行排序
System.out.println("元素"+number+"所在的位置在:"+binarySearch1(array,number,0,array.length-1));
System.out.println("元素"+number+"所在的位置在:"+binarySearch2(array,number));
System.out.println("元素"+num+"所在的位置在:"+binarySearch2(array,num));
}
}
运行结果
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22700729/viewspace-1112356/ ,如需转载,请注明出处,否则将追究法律责任。