我们在昨天说了二次线性中查找的办法,这回我们再来说一说二次线性数组去重的用法。
//先建立一个数组
var arr = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 5, 5, 6, 7, 8, 9, 0, 0, 3, 4, 5];
//我们先封装一个函数来进行计算数组去重的计算
function findInArr(arr,n){
//数据比对
for(var i = 0; i < arr.length; i++){
//不要看到这样写的if语句就认为不好使,其实是可以的
if(arr[i] == n)return true;
}
return false;
}
//封装一个二分去重的函数
function removeDup(arr, s, e){
//还是先判断一下是否出错
if(s > e){
return false;
}else if(s == e){
//如果数组中只有一个数据时返回一个数就行
return [arr[s]];
}
//计算中间值
var c = Math.floor((s + e) / 2);
//将数据分成两个
var l = removeDup(arr, s, c);
var r = removeDup(arr, c + 1, e);
//开始循环对比
for(var i = 0; i < r.length; i++){
if(!findInArr(l,r[i])){
l.push(r[i]);
}
}
//最终返回计算完的数组
return l;
}
//将结果发到控制台
console.log(removeDup(arr, 0, arr.length - 1));
这样我们就可以进行数组中的去重步骤了,用二次线性是可以对大量数据来进行快速分析的。有兴趣的可以试一试