[CF1149B] Three Religions - 動態dp
阿新 • • 發佈:2020-07-17
Java順序查詢、二分查詢
查詢演算法中順序查詢算是最簡單的了,無論是有序的還是無序的都可以,只需要一個個對比即可,但其實效率很低。
順序查詢
動圖演示
詳細程式碼
// 順序查詢
public static boolean search(int[] arrray, int key) {
for (int i = 0; i < arrray.length; i++) {
if (arrray[i] == key) {
return true;
}
}
return false;
}
二分查詢
二分法查詢適用於大的資料,但前提條件是資料必須是有序的,他的原理是先和中間的比較,如果等於就直接返回,如果小於就在前半部分繼續使用二分法進行查詢,如果大於則在後半部分繼續使用二分法進行查詢。
動圖演示
詳細程式碼
// 非遞迴 public static boolean binarySearch1(int[] array,int key) { int low = 0; int high = array.length-1; while(low <= high) { int middle = low + (high-low)/2; if(key==array[middle]) { return true; } if(key>array[middle]) { low = middle + 1; } if(key<array[middle]) { high = middle - 1; } } return false; } // 遞迴 public static boolean binarySearch2(int[] array,int key) { int low = 0; int high = array.length - 1; return Search(array,key,low,high); } public static boolean Search(int[] array,int key,int low,int high) { int mid = low + (high - low)/2; if(low>high) { return false; } if(key == array[mid]) { return true; } if(key>array[mid]) { return Search(array,key,mid+1,high); } return Search(array,key,low,mid-1); }