1. 程式人生 > >1000個數範圍[0,999],有2個相同的數,求這個數

1000個數範圍[0,999],有2個相同的數,求這個數

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;
     }
}