查找算法

检索算法

顺序查找

function seqSearch(arr, data) {
for(var i = 0; i < arr.length; i++) {
if(arr[i] == data) {
return true;
}
}
return false;
}

查找最大值

function getMax(arr) {
if(arr.length == 0) {return}
var max = arr[0];
for(var i = 1; i < arr.length; i++) {
if(arr[i] > max) {
max = arr[i];
}
}
return max;
}

查找最小值

function getMin(arr) {
if(arr.length == 0) {return}
var min = arr[0];
for(var i = 1; i < arr.length; i++) {
if(arr[i] < min) {
min = arr[i];
}
}
return min;
}

二分查找(适用于有序数列)

function binSearch(arr, data) {
var upB = arr.length-1;
var downB = 0;
while(downB <= upB) {
var mid = Math.floor((upB + downB)/2);
if(arr[mid] < data) {
downB = mid + 1;
}
else if(arr[mid] > data) {
upB = mid - 1;
}
else {
return mid;
}
}
return -1;
}

计算重复次数

function repeatNum(arr, data) {
var count = 0;
var position = binSearch(arr, data);
if(position > -1) {
count++;
for(var i = position-1; i >= 0; i--) {
if(arr[i] == data) {
count++;
}else {
break;
}
}
for(var j = position + 1; j < arr.length; j++) {
if(arr[j] == data) {
count++;
}else {
break;
}
}
}
return count;
}

posted @ 2018-03-18 16:34  YFIFE  阅读(184)  评论(0)    收藏  举报