所以我的任务是实现递归二分搜索以在整数数组中找到目标值。我将所有代码都关闭了,但是我在这部分中遇到了问题:在每次递归调用中,输出您正在检查的中间值与目标值。如果中间值与目标不匹配,请指出下一轮是否检查搜索阵列的顶部或底部。如何在递归二进制搜索中显示新中间的位置
这里是我的代码:
public class anArray {
private long[] a; // reference to array a in anArray()
private int nElems; // number of elements
public anArray(int max) // constructor
{
a = new long[max]; // creates new array
nElems = 0;
}
public int size() // this will return the size of the array,
{ // or number of elements
return nElems;
}
public int find(long search) // constructor to find search
{
return recFind(search, 0, nElems - 1);
}
private int recFind(long search, int lowerBound, int upperBound) {
int mid = (lowerBound + upperBound)/2;
if (search == a[mid]) {
return mid; // value found at anArray[mid]
} else if (lowerBound > upperBound) {
return nElems; // can't find it
} else // divide range
{
if (a[mid] < search) // it's in the upper half
{
return recFind(search, mid + 1, upperBound);
} else // it's in the lower half
{
return recFind(search, lowerBound, mid - 1);
}
}
}
public void insert(long v) // put element into array
{
int j;
for (j = 0; j < nElems; j++) // find where it goes
{
if (a[j] > v) // linear search
{
break;
}
}
for (int k = nElems; k > j; k--) // move bigger ones up
{
a[k] = a[k - 1];
}
a[j] = v; // insert it
nElems++; // increment size
}
public void display() // displays array elements
{
for (int j = 0; j < nElems; j++) // for each element,
{
System.out.println(a[j] + " "); // display it.
}
System.out.println(" ");
}
}
而且我的演示:
public class BinarySearchDemo {
public static void main(String[] args) {
int maxSize = 21; // array size
anArray arr; // reference to array
arr = new anArray(maxSize); // create the array
arr.insert(45); // insert elements
arr.insert(78);
arr.insert(98);
arr.insert(12);
arr.insert(56);
arr.insert(45);
arr.insert(12);
arr.insert(78);
arr.insert(63);
arr.insert(45);
arr.insert(78);
arr.insert(45);
arr.insert(77);
arr.insert(12);
arr.insert(80);
arr.insert(82);
arr.insert(78);
arr.insert(54);
arr.insert(65);
arr.insert(80);
arr.insert(50);
arr.display(); // displays array
int search = 82; // search for item
if (arr.find(search) != arr.size()) {
System.out.println("Found " + search);
} else {
System.out.println("Can't find " + search);
}
}
}
感谢所有帮助。
'的System.out.println(A [MID]);' – immibis 2014-09-11 03:28:16