js算法中的排序、数组去重详细概述(2)


var arr = []; 
for(var i=0;i<20;i++){ 
    arr.push(parseInt(Math.random()*10)); 

Array.prototype.indexOf = function(n){ 
    for(var i=0;i<this.length;i++){ 
        if(this[i] == n){ 
            return i; 
        } 
    } 
    return -1; 

function removeDup(arr){ 
    var result = []; 
    for(var i=0;i<arr.length;i++){ 
        if(result.indexOf(arr[i]) == -1){ 

            result.push(arr[i]); 
        } 
    } 
    return result;  

var arr2 = removeDup(arr) 
document.write(arr+'<br/>'+arr2)


算法数组去掉重复

复制代码 代码如下:


var arr = []; 
for(var i=0;i<20;i++){ 
    arr.push(parseInt(Math.random()*10)); 

Array.prototype.indexOf = function(n){ 
    for(var i=0;i<this.length;i++){ 
        if(this[i] == n){ 
            return i; 
        } 
    } 
    return -1; 

function removeDup(arr,s,e){ 
    if(s==e){ 
        //分割就剩下一个 
        return [arr[s]] 
    }else if(s==e-1){ 
        //为了优化 剩下两个就不用分割啦 
        if(arr[s]==arr[e]){ 
            return [arr[s]] 
        }else{ 
            return [arr[s],arr[e]]; 
        } 
    } 
    //数组平分成两段, 
    var l = Math.floor((s+e)/2); 
    //左边 
    var arrL = removeDup(arr,s,l); 
    //右边 
    var arrR = removeDup(arr,l+1,e); 
    //结果 先把左边的复制进去 
    var result = arrL; 
    //循环 将不重复的数据插入到结果里面 
    for(var i=0;i<arrR.length;i++){ 
        if(result.indexOf(arrR[i])== -1 ) result.push(arrR[i]) 
    } 
    return result; //返回结果 

var arrDup = removeDup(arr, 0, arr.length-1); 
document.write(arr+'<br/>'+arrDup);


讲解:将重复的数组 切割,拆分到最后只剩下一个数据或或者两个数组,将左边的数据放到结果里面,右边重复的跳过 不重复插入,直到循环完,返回结果就可以

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdzgfx.html