class Arr//定义一个类
{
public static void bubblesout(int[] arr)//定义循环
{
for(int x=0;x<arr.length;x++)
{
for(int i=x+1;i<arr.length;i++)
{
if(arr[x]>arr[i])
{
int temp=arr[x];
arr[x]=arr[i];
arr[i]=temp;
}
}
System.out.println("arr["+x+"]="+arr[x]);
}
}
public static void pointarray(int[] arr)//定义打印方式
{
System.out.println("[");
for(int x=0;x<arr.length;x++)
{
if(x<arr.length-1)
{
System.out.println("arr["+x+"]="+arr[x]);
}
}
System.out.println("]");
}
public static int halfseaurch(int[] arr,int x)//定义折中查询
{
int maxIndex = arr.length - 1;// 定义最大索引
int minIndex = 0;// 定义最小索引
int midIndex = (maxIndex + minIndex) / 2;// 定义中间索引
while(arr[midIndex]!=x)
{
if (arr[midIndex] > x)
{
maxIndex = midIndex - 1;
}
else if (arr[midIndex] <x)
{
minIndex = midIndex + 1;
}
// 如果数据不存在。
if (minIndex > maxIndex)
{
return -1;
}
// 下一次二分查找开始
midIndex = (maxIndex + minIndex) / 2;
}
return midIndex;
}
public static void main(String[] args)//主函数输出
{
int[] arr={1,6,8,5,2,9};
pointarray(arr);
System.out.println(arr);//排序前输出数组
bubblesout(arr);
System.out.println(arr);//排序后输出数组
int mid=halfseaurch(arr,1);
System.out.println("mid="+mid);//查找排序后数组的任意一角标数
}
} |
|