java数组(折半查找)

来源:互联网 发布:软件三层结构 编辑:程序博客网 时间:2024/05/16 06:13
  1. //基本查找方法(获取key第一义出现在数组中的位置,如果返回的是-1,则代表该key在该数组中不存在)  
  2. public static int getindex(int arr[],int key)  
  3. {  
  4.     for(int i=0;i<arr.length;i++)  
  5.     {  
  6.         if(arr[i]==key)  
  7.             return (i);  
  8.     }  
  9.     return (-1);  
  10. }  


 

[java] view plaincopy
  1. //折半查找可以提高效率,但必须保证该数组是有序的。  
  2.     public static int halfSearch(int arr[],int key)  
  3.     {  
  4.         int min,max,mid;  
  5.         min=0;  
  6.         max=arr.length-1;  
  7.         mid=(min+max)/2;  
  8.           
  9.         while(arr[mid]!=key)  
  10.         {  
  11.             if(key>arr[mid])  
  12.                 min=mid+1;  
  13.             else if(key<arr[mid])  
  14.                 max=mid-1;  
  15.               
  16.             if(min>max)  
  17.                 return -1;  
  18.             mid=(max+min)/2;  
  19.         }  
  20.         return mid;  
  21.     }  


 

[java] view plaincopy
  1. //折半查找的第二种方式。  
  2.     public static int halfSearch_2(int arr[],int key)  
  3.     {  
  4.         int min=0,max=arr.length-1,mid;  
  5.           
  6.         while(min<=max)  
  7.         {  
  8.             //相当于min=(max+min)/2;  
  9.             mid=(max+min)>>1;  
  10.               
  11.             if(key>arr[mid])  
  12.                 min=mid+1;  
  13.             else if(key<arr[mid])  
  14.                 max=mid-1;  
  15.             else  
  16.                 return mid;  
  17.           
  18.         }  
  19.         return -1;  
  20.     }  


 

[java] view plaincopy
  1.         /* 
  2.  练习:将一个数插入到一个有序的数组中,并保持该数组有序。 
  3.  */  
  4.   
  5. public static int getindex_2(int arr[],int key)  
  6. {  
  7.     int min=0,max=arr.length-1,mid;  
  8.       
  9.     while(min<=max)  
  10.     {  
  11.         //相当于min=(max+min)/2;  
  12.         mid=(max+min)>>1;  
  13.           
  14.         if(key>arr[mid])  
  15.             min=mid+1;  
  16.         else if(key<arr[mid])  
  17.             max=mid-1;  
  18.         else  
  19.             return mid;  
  20.       
  21.     }  
  22.     //min的位置就是该数适合插入到数组中的位置  
  23.     return min;  
  24.       
  25. }  
0 0
原创粉丝点击