java语言实现数组搜索
1、首先打开eclipse
2、新建一个java项目,名字随意起
3、名字起好后,点击完成
4、右键点击项目名称,新建,类
5、类的名字叫TextArraySearch
包的名字叫 com.zf.s2
点击完成
6、首先声明一个包,导入类
package com.zf.s2;//创建一个包
import java.util.Arrays;
7、运用递归和二分法搜索数组元素的类
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;//搜索数字位于数组中间
}
}
8、运用非递归和二分查找特定整数在整型数组中的位置
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;
}
9、主函数
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));
}
}
10、运行结果