折半查找

xiaoxiao2021-02-28  37

class  ArrayTest4 { public static void main(String[] args)  { /*int[] arr={3,2,1,5,4,2,9}; int index=getIndex(arr,20); System.out.println("index="+index);*/ int[] arr={2,4,5,7,19,32,45}; //int index=halfSearch(arr,320); int index=halfSearch_2(arr,50); System.out.println("index="+index); } /*折半的第二种方式*/ public static int halfSearch_2(int[] arr,int key) { int min=0,max=arr.length-1,mid; while(min<=max) { mid=(max+min)>>1;//除2 if(key>arr[mid]) min=mid+1; else if(key<arr[mid]) max=mid-1; else return mid; } return -1; } /*折半查找,提高效率,但必须保证该数组是有序的数组。*/ public static int halfSearch(int[] arr,int key) { int min,max,mid; min=0; max=arr.length-1; mid=(max+min)/2; while(arr[mid]!=key) { if(key>arr[mid]) { min=mid+1; }else if(key<arr[mid]){ max=mid-1; } if(min>max) return -1; mid=(max+min)/2; } return mid; } //定义功能,获取key第一次出现在数组中的位置。如果返回-1代表该key在数组中不存在 public static int getIndex(int[] arr,int key) { for(int x=0;x<arr.length;x++) { if(arr[x]==key) return x; } return -1; } }
转载请注明原文地址: https://www.6miu.com/read-2621033.html

最新回复(0)