配列の一般的なアクション_検索
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 }