1000個數範圍[0,999],有2個相同的數,求這個數
阿新 • • 發佈:2019-02-04
import java.util.Arrays; public class SearchDemo { /** *被搜尋資料的大小 */ private static final int size = 1000; public static void main(String[] args) { int[] data = new int[size]; // 新增測試資料 for (int k = 0; k < data.length; k++) { data[k] = k + 1; } data[999] = 567; result(data); } public static void result(int data[]){ Arrays.sort(data); for (int i = 0; i < data.length; i++) { int target = data[i]; data[i] = 0; int result = binaryFind(data, target); if (result != -1) { System.out.println(“相同元素為:”+data[result]); break; } } } /** * 二分搜尋演算法實現 * @param data * 資料集合 * @param target * 搜尋的資料 * @return 返回找到的資料的位置,返回-1表示沒有找到。 */ public static int binaryFind(int[] data, int target) { int start = 0; int end = data.length – 1; while (start <= end) { int middle = (start + end) / 2; if (target == data[middle]) { return middle; } if (target >= data[middle]) { start = middle + 1; } else { end = middle – 1; } } return -1; } }