顺序查找
查找指定值
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;}