Java面向对象_常用类库api——二分查找算法
概念:又称为折半查找,优点是比较次数少,查找速度快,平均性能好;缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
例:
1 public class BinarySearchDemo { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 int[] nums={20,34,30,45,54,60}; 9 Arrays.sort(nums); 10 for(int i:nums){ 11 System.out.println(i); 12 } 13 System.out.println(binarySearch(nums,60)); 14 } 15 //二分查找算法 16 //特点:查找速度快。要求:数列必须有序 17 public static int binarySearch(int[] nums,int key){ 18 int start=0; 19 int end=nums.length-1; 20 int mid=-1; 21 while(start<=end){ 22 mid=(start+end)/2; 23 if(nums[mid]==key){ 24 return mid; 25 }else if(nums[mid]<key){ 26 start=mid+1; 27 }else if(nums[mid]>key){ 28 end=mid-1; 29 } 30 } 31 return -1; 32 } 33 34 }