顺序搜索 & 二分搜索
function ArrayList(){
var array = [];
this.insert = function(item){
array.push(item);
}
this.toString = function(){
return array.join();
}
this.sequentialSearch = function(item){
for(var i = 0; i < array.length; i++){
if(item === array[i]){
return i;
}
}
return -1;
}
this.binarySearch = function(item){
/*将数组进行排序,会造成原数组顺序改变*/
var t;
var length = array.length;
for (var i = 0; i < length; i++) {
for (var j = 0; j < length-1; j++) {
if(array[j] > array[j+1]){
t = array[j];
array[j] = array[j+1];
array[j+1] = t;
}
}
}
/*查找*/
var low = 0,
high = length-1,
mid,element;
while(low <= high){
mid = parseInt((low + high)/2);
element = array[mid];
if(element < item){
low = mid + 1;
}else if(element > item){
high = mid -1;
}else{
return mid;
}
}
return -1;
}
}
方法使用
var arr = new ArrayList();
arr.insert(9);
arr.insert(6);
arr.insert(7);
arr.insert(2);
arr.insert(5);
arr.insert(1);
arr.insert(8);
arr.insert(4);
arr.insert(3);
console.log(arr.toString());/*[9,6,7,2,5,1,8,4,5]*/
console.log(arr.binarySearch(3));/*2*/
console.log(arr.sequentialSearch(3));/*2*/