二分查找vc線性查找

public static int binarySearch(int[] args ,int key ){
           
           int upNum = args.length -1;
           int lowNum =0;
           int mid = lowNum +(upNum-lowNum)/2;
/**int mid =(low + high) 
             * 2;在一般情況下, 這個語句是不會出錯的, 但是, 當low+high的值超過了
             * 最大的正int值 (231 - 1) 的時候, mid會變成負值,  這個時候, 會拋出
             * ArrayIndexOutOfBoundsException 異常..
             */
           int midValue =args[mid];
           if(midValue >key){
                 upNum =mid -1;
           }else if(midValue < key){
                 lowNum = mid +1;
           }else{
              return key;
           }
           return -(low+1);//找不到
}
  /**
     * 線性查找
     * 從args中查找key;返回查找到的次數
     * foreach
     */
    public int linearSearch(int[] args, int key) {
        long beginTime = System.currentTimeMillis();
        System.out.println(beginTime);
        System.out.println(System.currentTimeMillis());
        int m = -1;
        for (int n : args) {
            System.out.println("--------------");
            System.out.println(n + "***");
            if (n == key) {
                System.out.println("--------------");
                System.out.println("找到");
                long endTime = System.currentTimeMillis();
                System.out.println(endTime);
                System.out.println(endTime - beginTime);
                return m = n;
            } else {
                continue;
            }
        }
        return m;
    }
    static int sequenceSearching(int[] arr, int len, int key) {
        int i;
        for (i = 0; i < len && arr[i] != key; i++);
        if (i < len) {// 找到了,因爲arr[i]==key
            System.out.println(i);
            return i;
        } else {//沒找到
            return -1;
        }
    //return (i<len)?(i):(-1);
    }

 

發佈了40 篇原創文章 · 獲贊 0 · 訪問量 4387
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章