码迷,mamicode.com
首页 > 编程语言 > 详细

数组常见的操作_查找

时间:2015-02-26 21:35:29      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:

简单的查找方式:

 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!