-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------
注意:使用折半查找的必须是有序数组。
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
mid=(max+min)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
if(min>max)
return -1;
mid=(max+min)/2;
}
return mid;
}
折半查找的第二种方式:
public staatic int halfSearch_2(int[] arr,int key)
{
int min=0,max=arr.length-1,mid;
while(min<=max)
{
mid=(min+max)/2;
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
else
return mid;
}
return -1;
}
补充:如果有一个有序数组,要求插入一个数后,使其仍然有序,怎么做?
只须将程序中的“return -1;”,改为:“return min;”,其中min就是这个数在数组中应插入的位置。
-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------