注意:在MR程序中,其中有两个阶段使用到了归并,一个是在缓冲区溢写小文件时,最后会将多个小文件归并成一个大文件,另一个则是在reduce拉去map处理的数据到本地是会生成很多小文件,此时也会做一次归并。
7. 二分法查找数据 原理:在已经排好序的基础上,将数组元素折半查找。
原理图:
代码实现:
public static void main(String[] args) { int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; // 二分法查数据 int num = new Scanner(System.in).nextInt(); //查找的数 int start = 0; int end = arr.length - 1; int middle = (start + end) / 2; while (true) { //如果end<start说明全部找完也没有找到 if (end < start) { System.out.println(num + "不在此数组中"); break; } if (arr[middle] > num) { end = middle - 1; } else if (arr[middle] < num) { start = middle + 1; } else { System.out.println("这个数的索引下标为" + middle); break; } middle = (start + end) / 2; }试试