在排序数组中查找和为给定值的两个数字
2011-09-06 20:32
393 查看
package su.interview; import algorithm.recursive.QuickSorter; import utils.com.ArrayLister; import utils.random.NumericRandomer; /** * 在排序数组中查找和为给定值的两个数字 * * @author Toy * */ public class Array_06 { /** * 最初我们找到数组的第一个数字和最后一个数字。当两个数字的和大于输入的数字时,把较大的数字往前移动;当两个数字的和小于数字时,把较小的数字往后移动; * 当相等时,打印出结果。这样扫描的顺序是从数组的两端向数组的中间扫描。 * * @param a * @param sum */ public void find_01(int[] a, int sum) { int i = 0; int j = a.length - 1; int c = 0; while (true) { System.out.println(i + " " + j); if (i >= j) { break; } if ((a[i] + a[j]) > sum) { j--; } else if ((a[i] + a[j]) < sum) { i++; } else { c++; System.out.println("find: " + a[i] + " " + a[j]); i++; j--; } } System.out.println("find sum: "+sum+" find pair count: " + c); } /** * @param args */ public static void main(String[] args) { NumericRandomer r = new NumericRandomer(); Array_06 arr = new Array_06(); QuickSorter sort = new QuickSorter(); int[] a = r.random(15, 20); int sum = 15; ArrayLister.showArr(a); sort.quickSort_01(a, 0, a.length - 1); ArrayLister.showArr(a); arr.find_01(a, sum); } }
相关文章推荐
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 程序员面试题精选100题(10)-在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 程序员面试题精选(10)-在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字--总结
- 每天一道算法题8 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 在数组中查找和为给定值的两个数字(排序数组和不排序数组)
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 14.在排序数组中查找和为给定值的两个数字
- 程序员面试题精选(10):在排序数组中查找和为给定值的两个数字
- (08) [转载]- 在排序数组中查找和为给定值的两个数字
- 程序员面试题精选100题(10)-在排序数组中查找和为给定值的两个数字
- 每天一道算法题8 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字