JS中數據結構之檢索算法(查找算法)
阿新 • • 發佈:2019-01-24
als while pan ret turn 二分 find rbo font
順序查找
查找指定值
function seqSearch(arr, data) { for (var i = 0; i < arr.length; ++i) { if (arr[i] == data) { return true; } } return false; }
查找最小值和最大值
function findMin(arr) { var min = arr[0]; for (var i = 1; i < arr.length; ++i) { if (arr[i] < min) { min = arr[i]; } }return min; } function findMax(arr) { var max = arr[0]; for (var i = 1; i < arr.length; ++i) { if (arr[i] > max) { max = arr[i]; } } return max; }
自組織數據
對於未排序的數據集來說,當被查找的數據位於數據集的起始位置時,查找是最快、最成功的。通過將成功找到的元素置於數據集的起始位置,可以保證在以後的操作中該元素能被更快地查找到。
function seqSearch(arr, data) {for (var i = 0; i < arr.length; ++i) { if (arr[i] == data) { if (i > 0) { var temp = arr[i]; //使得被找到的數據逐漸向前移 arr[i] = arr[i-1]; arr[i-1] = temp; } return true; } } return false; }
二分查找
如果你要查找的數據是有序的,二分查找算法比順序查找算法更高效。
function binSearch(arr, data) {var upperBound = arr.length-1; var lowerBound = 0; while (lowerBound <= upperBound) { var mid = Math.floor((upperBound + lowerBound) / 2); if (arr[mid] < data) { lowerBound = mid + 1; }else if (arr[mid] > data) { upperBound = mid - 1; }else { return mid; } } return -1; }
JS中數據結構之檢索算法(查找算法)