算法导论学习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; } } }
不会啊。。。这个递归不会写了,没办法返回 查找值 在数组中的位置。。
相关文章推荐
- JAVA学习笔记----二分查找递归
- 算法导论学习2.3-4 插入排序的递归版本
- 算法导论Java实现-二分查找运用(习题2.3-7)
- 数据结构与算法学习之路:二分查找的非递归和递归算法
- 算法(第4版) 学习笔记二——二分查找的普通实现与递归实现
- 算法导论学习笔记(3)-习题2.3-7-排序+二分
- 算法导论Java实现-二分查找(习题2.3-5)
- 《算法导论》第二章----插入排序(伪代码实现、课后习题(递归版本、二分查找策略版本))
- 二分查找的尾递归和循环形式的分析
- 插入排序的递归实现和二分查找递归实现,算法导论2.3-4和2.3-5
- 算法导论学习2.3 分治法 (这个递归终于懂了。。)
- 【C++】二分查找的递归形式和非递归形式
- 算法导论2.3-7习题解答(合并排序算法及二分查找)
- 算法_二分查找的递归和非递归形式
- C语言:递归和非递归实现二分查找
- 二分查找的递归和非递归实现(C++函数模版)
- 二分查找,递归
- 二分查找的两种实现方式--循环和递归
- 二分递归查找和非递归查找
- 二分查找----递归实现