给定一个数组:inta[]={28,39,49,78,23};//你可以用任意的测试数据请对数组中的元素进行排序。给定一个数字x=49,请在排序后的数组中查找该元素。要求:*最好使用折半查找*排序和查找自...
给定一个数组:
int a[]={28,39,49,78,23}; // 你可以用任意的测试数据
请对数组中的元素进行排序。
给定一个数字 x=49,
请在排序后的数组中查找该元素。
要求:
* 最好使用折半查找
* 排序和查找自己写函数实现,不要使用标准API。
我编写的源代码如下,请大神帮我看看到底是哪里出错了~~~为什么就是显示不了正确答案呢。。。谢谢了!!!会在线等答案的~~~
public class SortAndSearch{
private int[] A;
public SortAndSearch(int[] arry)
{
int i = 0;
A = new int[arry.length];
for(int value:arry)
{
A[i++] = value;
}
}
public void Sort(int[] a){
int i,j,temp;
for(i=0;i
for(j=i+1;j
if(a[i]>a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
System.out.print(a[i]+",");
}
temp = a.length-1;
System.out.println(a[temp]);
}
public int Search(int x)
{
int low=0;
int high=A.length;
while(low<=high){
int mid = (low+high)/2;
if(x>A[mid]){
low=mid+1;
}
else if(x
high=mid-1;
}
else if(x==A[mid]){
return mid;
}
}
return 0;
}
public static void main(String[] args){
int []a={28,39,49,78,23};
SortAndSearch sas = new SortAndSearch(a);
System.out.println("排序前的数组为:28,39,49,78,23");
System.out.print("选择排序后的数组为:");
sas.Sort(a);
System.out.printf("折半查找49记录是%d:",sas.Search(78));
}
}
展开