您的位置:首页 > 其它

算法导论学习2.3-5 二分查找的递归形式

2012-03-28 15:44 435 查看
import java.util.*;

public class BinarySearch {
public static void main(String[] args) {
int[] data = {0,1,2,3};
int key = 1;
int[] num = {0};
search(data, 0, data.length - 1, key ,num);

System.out.println(key + " is in data[" + num[0] + "]");
}
static void search(int[] data, int i, int j, int key, int[] num) {
//	    int centre = (j - i + 1) / 2;
//		if (centre > 0) {
//			if (data[centre] > key) {
//				search(data, i, centre - 1, key, num);
//			}
//			else if(data[centre] < key) {
//				search(data,centre + 1, j, key, num);
//			}
//			else if(data[centre] == key) {
//				num = centre;
//			}
//		}

int centre = (j - i + 1) / 2;
int[] left = Arrays.copyOfRange(data, i, centre + 1);
int[] right = Arrays.copyOfRange(data, centre + 1, j + 1);

if (centre > 0) {
if (left[left.length - 1] < key)
search(right, i, right.length - 1, key, num);
else if (left[left.length - 1] > key)
search(left, i, left.length - 1, key,num);
else if (left.length - 1 == key)
num[0] = left.length - 1;
else
num[0] = -1;
}
}

}


不会啊。。。这个递归不会写了,没办法返回 查找值 在数组中的位置。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: