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

面试大全:算法

作者: 西瓜炒苦瓜 | 来源:发表于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