配列の一般的なアクション_検索

7472 ワード

簡単な検索方法:
 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 }