1. 程式人生 > >Java 利用泛型實現折半查詢法

Java 利用泛型實現折半查詢法

泛型到底厲害在什麼地方?

可以大大減少我們的程式碼量,可以把我們從重複工作中解放出來,使我們更加專注於核心程式碼的實現,核心演算法的編寫。

舉一個最簡單的例子:

我們在學習資料結構時,為了理解方便和簡化程式設計,通常都使用整數作為分析的物件。利用Java的泛型機制,只需要將int型別換成泛型型別T就可以用在各種不同的型別中。

package com.mingrisoft.generic;

import java.util.Arrays;

public class BinSearch {
    public static <T extends Comparable<? super T>>  int search(T[] array, T key) {
        //? super T 表示包含T在內的任何T的父類
        int low = 0;
        int mid = 0;
        int high = array.length;
        System.out.println("查詢的中間值:");
        while (low <= high) {
            mid = (low + high) / 2;
            System.out.print(mid+" ");
            if (key.compareTo(array[mid]) > 0) {
                low = mid + 1;
            } else if (key.compareTo(array[mid]) < 0) {
                high = mid - 1;
            } else {
                System.out.println();
                return mid;
            }
        }
        return -1;
    }
    
    public static void main(String[] args) {
        Integer[] ints = {1,2,3,4,5,6,7,8,9,10};
        System.out.println("資料集合:");
        System.out.println(Arrays.toString(ints));
        System.out.println("元素3所對於的索引序號:"+search(ints, 3));
    }
}