JS中数据结构之检索算法(查找算法)
Posted 提升自己,才有选择的能力和勇气
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS中数据结构之检索算法(查找算法)相关的知识,希望对你有一定的参考价值。
顺序查找
查找指定值
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中数据结构之检索算法(查找算法)的主要内容,如果未能解决你的问题,请参考以下文章