Java 利用泛型實現折半查詢法
阿新 • • 發佈:2018-11-21
泛型到底厲害在什麼地方?
可以大大減少我們的程式碼量,可以把我們從重複工作中解放出來,使我們更加專注於核心程式碼的實現,核心演算法的編寫。
舉一個最簡單的例子:
我們在學習資料結構時,為了理解方便和簡化程式設計,通常都使用整數作為分析的物件。利用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)); } }