1. 程式人生 > >JS中數據結構之檢索算法(查找算法)

JS中數據結構之檢索算法(查找算法)

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中數據結構之檢索算法(查找算法)