前端常用算法

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

排序算法

  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() 方法可返回指定位置的字符。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 最近在梳理知识结构,在复习数据结构与算法的时候仔细理了一遍。由于内容比较多,现在整理的是基础的内容: 排序和...
    临水照影233阅读 656评论 0 0
  • 排序算法 1、冒泡排序 function bubbleSort(arr){ var i = j = 0; fo...
    LaBaby_阅读 255评论 0 1
  • 排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序; 输入:n个数:a1,a2,a3,…,an 输...
    code武阅读 683评论 0 0
  • 人类在一次次的追问中成长进步,在回答与否定中探索前行。也将在无限循环的问与答中走向更文明的未来。 我们都见证过小孩...
    如意ylm阅读 169评论 0 4