Java作為一種高級編程語言,擁有許多求解問題的算法和數據結構。在算法課程中,我們學習到了兩種比較常見的查找算法:順序查找和折半查找。
順序查找,也叫線性查找,是一種簡單直接的查找算法。它是從數組的第一個元素開始,逐個遍歷數組的所有元素,直到找到目標值為止。如果遍歷完整個數組還沒找到目標值,就說明目標值在數組中不存在。
public static int sequentialSearch(int[] array, int target) { for (int i = 0; i < array.length; i++) { if (array[i] == target) { return i; } } return -1; }
折半查找,也叫二分查找,是一種高效的查找算法。它利用了目標數組有序這一特點,每次查找都可以將待查找的區間縮小一半,直到找到目標值為止。值得注意的是,折半查找只適用于已經排序好的數組。
public static int binarySearch(int[] array, int target) { int left = 0; int right = array.length - 1; while (left <= right) { int mid = (left + right) / 2; if (array[mid] == target) { return mid; } else if (array[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; }
在實際應用中,順序查找和折半查找有著不同的應用場景。如果數據量不是很大,順序查找可以起到比較良好的查找效果;如果數據量較大,或者對查找效率有較高的要求時,折半查找則是更好的選擇。
上一篇div 高度控制