关闭

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

403人阅读 评论(0) 收藏 举报
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;
    	}    	
    }
    
}


不会啊。。。这个递归不会写了,没办法返回 查找值 在数组中的位置。。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:39017次
    • 积分:702
    • 等级:
    • 排名:千里之外
    • 原创:31篇
    • 转载:5篇
    • 译文:0篇
    • 评论:5条
    文章分类