class halfsearch
{
public static void main(String[] args)
{
int[] arr={2,34,4,5,6,76,24,78,90,68,3,37};//亲折半查找的第一个前提是数组必须是有序的昂
bubble(arr);
printout(arr);
int index=gethalf_2(arr,37);
System.out.println("halfkey="+index);
}
public static int gethalf_2(int[] arr,int key)
{
int min=0,max=arr.length-1,mid;
while (min<=max)
{
mid=min+max>>1; //mid=(min+max)/2;
if (key>arr[mid])
min=mid+1;
else if (key<arr[mid])
max=mid-1;
else
return mid;
}
return -1;
}
public static void printout(int[] arr)
{
System.out.print("shuzu:[");
for (int x=0;x<arr.length ;x++ )
{
if (x!=arr.length-1)
System.out.print(arr[x]+", ");
else
System.out.println(arr[x]+"]");
}
}
public static void bubble(int[] arr)//你的这个函数是冒泡排序法
{
for (int x=0;x<arr.length;x++)
{
for (int y=0;y<arr.length-x-1;y++)
{
if (arr[y]>arr[y+1])
{
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
}
/*
*折半查找是每次取中间的数与想要查找的数做比较,如果比所有查找的数大就把所定义的小角标向右移
*反之原理相同,具体的代码如下:
* public static int halfSearch2(int[] arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
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;
}
*
*
*/
}
|