JAVA——折半查找
1.折半查找的思想就是:首先有一个从小到大排序的序列,把要查找的值与中间的值比较,如果比中间的值大,他就在中间值的右边,如果比中间值小,他就在中间值的左边。依次比较。
import java.util.Scanner; public class FindTest { public static void main(String[] args) { // 请在 Begin-End 间编写代码 /********** Begin **********/ // 定义变量 int n=0; int min=0; int mid; int count=0; // 接收给定数据 Scanner scanner = new Scanner(System.in); int i = scanner.nextInt(); // 数组长度 int key = scanner.nextInt(); // 需要查找的元素 // 定义数组 int[] arr = new int[i]; // 给数组赋值 while (!scanner.hasNext("#")){ int x = scanner.nextInt();//这里要通过给x赋值,然后再让x的值等于arr[n]的值 arr[n]=x; n++; } // 查找给定元素索引,并输出查找次数 int max=arr.length-1; mid=(max+min)/2; while(true) { count++; if(key<arr[mid]) { // 如果目标元素小于中点元素 max = mid-1; // max向mid前移动 }else if(key>arr[mid]) { // 如果目标元素大于中点元素 min = mid+1; // min向mid后移动 }else { System.out.print("索引值:"+mid+"。查找次数:"+count+"。"); // 找到目标元素 break; } if(max<min) { // 没有找到的情况 System.out.print("没有找到"); break; } mid=(max+min)/2; // 重新计算中间索引值 } /********** End **********/ } }

浙公网安备 33010602011771号