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 b足毂忍珩inarySearch1(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 begin朐袁噙岿Index = 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、运行结果