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

原创 2012年03月28日 15:44:24
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;
    	}    	
    }
    
}


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

版权声明:本文为博主原创文章,未经博主允许不得转载。

算法导论 2.3-5

题目 回顾一下联系2.1-3中提到的查找问题,注意如果序列A是已排序的,就可以将该序列的中点与v进行比较。根据比较的结果,原序列中有一半就可以不用再做进一步的考虑了。二分查找就是一个不断重复这一过程...
  • u010352083
  • u010352083
  • 2013年05月08日 14:35
  • 1195

算法导论2.3-5二分查找

#include using namespace std; int main() {     int i,n,a[20],find,num=0;     cout     cin>>n;  ...
  • u013025423
  • u013025423
  • 2015年07月29日 08:57
  • 142

二分查找的递归和非递归写法

二分查找是针对有序序列来说的,在有序序列中使用二分查找能大大提高查找效率,这里记录一下二分查找的递归和非递归写法。非递归写法:public int binarySearch(int[] a, int ...
  • buptwds
  • buptwds
  • 2016年07月18日 18:21
  • 813

「算法导论」:二分查找

时间复杂度:o(lgn) 空间复杂度
  • u014723123
  • u014723123
  • 2014年07月01日 16:45
  • 422

二分查找算法递归和非递归实现

自己接触和了解过的查找算法总结起来分为3个吧: 1. 静态查找(主要是二分查找,效率较高) 2. 动态查找(二叉查找树) 3. 哈希表 首先来说二分查找吧! 基本思想: 时间复杂度: 空间复杂度: 代...
  • coding__madman
  • coding__madman
  • 2016年03月10日 00:44
  • 4709

java实现递归版二分查找算法

递归的特点? 1.玩递归主要就是去尝试解决一下规模更小的问题,采用递归将问题收敛到最简单的情况解决。 2.由1可知,递归肯定是有一个最简单的情况。 3.递归调用的父问题和准备解决的子问题之间不应...
  • ya_1249463314
  • ya_1249463314
  • 2016年09月20日 23:21
  • 2629

简单二分查找和递归的思想

递归是一种重要的编程思想,在学习数据结构时,经常用到递归的思想。就是让函数在一定条件下不断的调用自己,从而求解。思考起来逻辑更为简单,代码更加简洁,但是也容易出现死循环,并且代码的扩展性和可读性不好。...
  • qq_21949639
  • qq_21949639
  • 2016年03月13日 15:21
  • 406

二分查找递归和非递归实现(c语言实现)

课堂上的代码
  • qq_37353105
  • qq_37353105
  • 2017年05月25日 15:27
  • 385

递归实现二分查找(Python2.7)

二分查找
  • king_wpf
  • king_wpf
  • 2016年10月05日 10:53
  • 756

二分查找法的循环与递归实现及时间复杂度分析

转载:http://baike.baidu.com/link?url=3aEK-qcVbYi6ioJOsf-dFmvFQ6WQgzTwnE9JkmlHBc88qk-D00SambfrSl3hVh_Uy...
  • xiamentingtao
  • xiamentingtao
  • 2015年04月22日 11:19
  • 2200
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法导论学习2.3-5 二分查找的递归形式
举报原因:
原因补充:

(最多只允许输入30个字)