标签:
简单的查找方式:
1 public class Array_Find1 { 2 public static void main(String[] args) { 3 int[] arr={3,5,67,8,68,4}; 4 int index = getIndex(arr,8); 5 System.out.println("index="+index); 6 } 7 8 //定义功能,获取key第一次出现在数组中的位置 如果返回的是-1那么代表该key在数组中不存在 9 public static int getIndex(int[] arr,int key){ 10 for (int x = 0;x<arr.length ;x++ ){ 11 if(arr[x]==key) 12 return x; 13 } 14 return -1; 15 } 16 }
折半查找:可以提高效率,但是必须保证该数组是有序的数组
1 public class Array_Find2 { 2 public static void main(String[] args) { 3 4 } 5 6 public static int halfSearch(int[] arr,int key){ 7 int min,max,mid; 8 min = 0; 9 max = arr.length-1; 10 mid = (max+min)/2; 11 12 while(arr[mid]!=key){ 13 if (key>arr[mid]) 14 min = mid+1; 15 else if (key<arr[mid]) 16 max = mid-1; 17 18 if(min>max) 19 return -1;//表示没找到,数组中没有这个数 20 mid = (max+min)/2; 21 } 22 return mid; 23 } 24 25 26 //折半的第二种方式 27 public static int halfSearch_2(int[] arr,int key){ 28 int min = 0,max = arr.length-1,mid; 29 30 while(min<=max){ 31 mid = (max+min)>>1;//相当于除2 32 33 if(key>arr[mid]) 34 min = mid + 1; 35 else if (key<arr[mid]) 36 max = mid - 1; 37 else 38 return mid; 39 } 40 return -1; 41 } 42 }
标签:
原文地址:http://www.cnblogs.com/LO-ME/p/3548002.html