美文网首页
前端常用算法

前端常用算法

作者: kathyb24 | 来源:发表于2018-10-15 21:11 被阅读0次

没错,作为一个菜鸟,我真的不认为前端需要用到算法。
我不是朝后段喊一声,什么都有了么???(黑人问号)
然而实际上,前端还是有一些常用算法的,而且有很多很简单的算法或者实现方法,我从未将其作为一个算法来理解,更不用说理解成前端算法。

排序算法

  1. 冒泡:复杂度O(n2)

    function bubbleSort(arr){
       var i = 0,
            j = 0;
       for(i=1; i<arr.length; i++){
       for(j=0; j<=arr.length-i; j++){
       var temp = 0;
       // ">" 从小到大排序
       // "<" 从大到小排序
       if(arr[j] > arr[j+1]){
           temp = arr[j];
           arr[j] = arr[j+1];
           arr[j+1] = temp;
         }
       }
       }
       console.log(arr);
       return arr;
    
     }
    
     (function main() {
        var arr = [3,0,9,100,3];
        arr = bubbleSort(arr);
     }());
    
  2. 快速排序:复杂度 O(n2) or O(nlog2n)

// 每次选择最左边的数作为基数

function quickSort(arr){
  if (arr.length<2) { return arr; }
  // 定义左指针
  var left=0;
  // 定义右指针
  var right=arr.length-1;
  //开启每一轮的排序
  while(left<right){
    // 寻找右边比arr[0]小的数的下标
    while(arr[right]>=arr[0] && left<right){
      right=right-1;
    }
    // 寻找左边比arr[0]大的数的下标
    while(arr[left]<=arr[0] && left<right){
      left++;
    }
    //当左边指针与右边指针相遇后,交换arr[0]与当前两个指针所在的元素
    if (right==left) {
      let mid=arr[right];
      arr[right]=arr[0];
      arr[0]=mid;
      break;
    }
    // 当左指针小于右指针的位置,交换两个指针当前位置的元素
    let tem=arr[right];
    arr[right]=arr[left];
    arr[left]=tem;
  }
  //递归实现
  return quickSort(arr.slice(0,left)).concat(arr.slice(left,right+1)).concat(quickSort(arr.slice(right+1)));
}
  1. 有序数组合并

     function merge(left, right) {
       var result = [],
       il = 0,
       ir = 0;
    
       while (il < left.length && ir < right.length) {
         if (left[il] < right[ir]) {
           result.push(left[il++]);
         } else {
           result.push(right[ir++]);
         }
       }
       while(left[il]){
         result.push(left[il++]);
       }
       while(right[ir]){
         result.push(right[ir++]);
       }
       return result;
    }
    

字符处理

  1. 生成随机验证

     function bubbleSort(n){
       var str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
       var tmp = '';
       for(var i=0;i<n;i++)
          tmp += str.charAt(Math.round(Math.random()*str.length));
    
       console.log(tmp);
       return tmp;
     }
    
  • charAt() 方法可返回指定位置的字符。

相关文章

  • 前端常用算法

    没错,作为一个菜鸟,我真的不认为前端需要用到算法。我不是朝后段喊一声,什么都有了么???(黑人问号)然而实际上,前...

  • 前端常用算法

    1. 通过parentId生成树形结构 第一种 第二种(时间复杂度最小) 2. 实现数组的随机排序 3. 兼容性较...

  • 《前端算法系列》数组去重

    虽然算法在前端开发中很少会得以使用,但是了解常用的算法,熟悉各种算法的性能和优劣,将会让你在前端的道路上走的更远。...

  • 前端常见的面试手写代码

    web 前端工程师在面试时,常常会被要去现场手写/机写代码。涉及的内容包括常用的排序算法、查找算法;JavaScr...

  • 2021.10.21 - 学习记录

    一个算法: 欧几里得算法,最大公约数 前端学习知识点:很多网站不常用table iframe这两个元素,知道原因吗...

  • 算法与数据结构

    五大常用算法之一:分治算法 五大常用算法之二:动态规划算法 五大常用算法之三:贪心算法 五大常用算法之四:回溯法 ...

  • 前端算法

    前端算法

  • 前端算法汇总

    前端算法汇总

  • SHA MD5 Hmac算法是不可逆的, 只有加密, 不能解密

    常用的加密算法:SHA、MD5、Hmac 常用的加密/解密算法: AES、DES 常用的编码解码算法: UrlDe...

  • JVM系列(四):浅谈常用四种垃圾回收算法总结!

    常用四种垃圾回收算法 常用的垃圾回收算法有四种:标记-清除算法、复制算法、标记-整理算法、分代收集算法。 1.标记...

网友评论

      本文标题:前端常用算法

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