
image.png

image.png

image.png
顺序查找
// 顺序查找
function seqSearch(arr,data) {
for(var i=0;i<arr.length;i++){
if(arr[i]==data){
return i+1;
}
}
return -1; // 找不到
}
// 查找最大值
function findMax() {
var max = arr[0];
for(var i=0;i<arr.length;i++){
if(arr[i]>max){
max = arr[i]
}
}
return max;
}
// 查找最小值
function findMix() {
var min = arr[0];
for(var i=0;i<arr.length;i++){
if(arr[i]<min){
min = arr[i]
}
}
return min;
}
var arr = [23,100,56,78,32];
console.log('查找78元素的位置在',seqSearch(arr,78));
console.log('查找最大值',findMax());
console.log('查找最小值',findMix());
自组织数据查找方法
// 自组织数据查找方法--二八原则
function seqSearch1(arr,data) {
for(var i=0;i<arr.length;i++){
// 只对距离数据集起始为这事一定方位外元素进行交换
if(arr[i]==data&&i>(arr.length*0.2)){
swap(arr,i,i-1);
return true;
}
}
return -1;// 查找不到
}
var arr = [23,100,56,78,32];
seqSearch1(arr,56)
seqSearch1(arr,56)
seqSearch1(arr,56)
seqSearch1(arr,32)
seqSearch1(arr,32)
console.log(arr)// arr结果为:[23, 56, 32, 100, 78]
二分查找方法 前提是要对数组进行排好序
// 二分查找法 前提是要对数组进行排序
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){
// data小于中间值
lowerBound = mid+1;
}else if(arr[mid]>data){
// data大于中间值
upperBound = mid-1;
}else{
// data等于中间值
return mid+1;
}
}
return -1; // 查找不到
}
var arr = [23,32,56,78,100];
var result = binSearch(arr,56);
console.log('查找56的位置在:',result)
网友评论