美文网首页
面试大全:算法

面试大全:算法

作者: 西瓜炒苦瓜 | 来源:发表于2017-07-28 10:30 被阅读22次
    1.数组去重
    1.遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组
    function removearr(ar) {
            var ret = [];
                 for (var i = 0, j = ar.length; i < j; i++) {
                  if (ret.indexOf(ar[i]) === -1) {
                          ret.push(ar[i]);
                     }
                  }
              return ret;
             }
    console.log(removearr([1,2,3,1,2,3,1,4]));
    2.遍历数组,利用object对象保存数组值,判断数组值是否已经保存在object中,未保存则push到新数组并用object[arrayItem]=1的方式记录保存
    function removearr(ar) {
               var tmp = {},
                    ret = [];
                for (var i = 0, j = ar.length; i < j; i++) {
                    if (!tmp[ar[i]]) {
                        tmp[ar[i]] = 1;
                        ret.push(ar[i]);
                    }
                }
                return ret;
            }
    console.log(removearr([1,2,3,4,3,2]))
    
    2.二分法查找
    1.二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找过程可以分为以下步骤:
    (1)首先,从有序数组的中间的元素开始搜索,如果该元素正好是目标元素(即要查找的元素),则搜索过程结束,否则进行下一步。
    (2)如果目标元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半区域查找,然后重复第一步的操作。
    (3)如果某一步数组为空,则表示找不到目标元素。
    function binarySearch(data, dest, start, end){  
                var end = end || data.length - 1,  
                    start = start || 0,  
                    m = Math.floor((start + end) / 2);  
                if(data[m] == dest){  
                    return m;  
                }  
                if(dest < data[m]){  
                    return binarySearch(data, dest, 0, m-1);  
                }else{  
                    return binarySearch(data, dest, m+1, end);  
                }  
                return false;  
            }  
    var arr = [-34, 1, 3, 4, 5, 8, 34, 45, 65, 87];  
    console.log(binarySearch(arr,45));  
    
    3.数组从小到大排序
    1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
    3.针对所有的元素重复以上的步骤,除了最后一个。
    4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
    function sort(a){
        for(var i=0;i<a.length;i++){
            for(var j=i+0;j<a.length;j++){
                if(a[i]>a[j]){
                    var tmp=a[i];
                    a[i]=a[j];
                    a[j]=tmp;
                }
            }
          }
         return a;
    }
    console.log(sort([9,2,5,7,77,8]));
    
    4.字符串循环复制
    function repeatStr(str,count){
                var text='';
                for(var i=0;i<count;i++){
                    text+=str;
                }
                return text;
              }
              alert(repeatStr("abc",3))
    

    相关文章

      网友评论

          本文标题:面试大全:算法

          本文链接:https://www.haomeiwen.com/subject/xrbfcxtx.html