JavaScript 常用算法

1.排序算法

(1)冒泡排序,冒泡排序其实就是通过比较相邻位置的元素大小,如果左边比右边大,就交换位置,继续比较,实际上就是每轮比较都得出一个最大值,然后通过多伦比较得出。

  function bubbleSort(arr){
      for(var i=1;i<arr.length;i++){
        for(var j=0;j<arr.length-i;j++){ var temp; if(arr[j]>arr[j+1]){
          temp=arr[j];
          arr[j]=arr[j+1];
          arr[j+1]=temp;
        }
      }
    }
    return arr;
  }

(2)快速排序,我们选定一个数,然后比它小的都放在它左边,大于等于它的都放在它右边,那么这个时候对这个数来讲他的位置已经排到了正确的地方了,接下 来要做的就是在它的左右两边分别再进行类似操作。

     function quickSort(arr,l,r){
         var i,j,x;
         if(l<r){
            i=l;
            j=r;
            x=arr[i];
        while(i<j){
          while(i<j&&arr[j]>=x){
          j–;
        }
        if(i<j){
          arr[i]=arr[j];
        }
      while(i<j&&arr[i]<x){
          i++;
      }
      if(i<j){
        arr[j]=arr[i];
      }
    }
    arr[i]=x;
      //递归调用
    quickSort(arr,i+1,r);
    quickSort(arr,l,i-1);
    }
     return arr;
  }

2.阶段乘法

      function factorialize(num) {
          var result = num;
          if (num < 0) { return -1; } else if (num === 0 || num === 1) { return 1; } else { while (num > 1) {
            num–;
            result *= num;
          }
        }
        return result;
      }

3.回文字符串判断, 字符串忽略标点符号、大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文)

        function palindrome(str) {
              // 删除字符串中不必要的字符
            var re = /[W_]/g;
              // 将字符串变成小写字符
            var lowRegStr = str.toLowerCase().replace(re, ”);
              // 如果字符串lowRegStr的length长度为0时,字符串即是palindrome
              if (lowRegStr.length === 0) {
                  return true;
                }
            // 如果字符串的第一个和最后一个字符不相同,那么字符串就不是palindrome
            if (lowRegStr[0] !== lowRegStr[lowRegStr.length – 1]) {
                return false;
              } else {
                return palindrome(lowRegStr.slice(1, lowRegStr.length – 1));
            }
          }

4.翻转字符串方法

      (1)function reverseString(str) {
          var tmp = “”;
          for (var i = str.length – 1; i >= 0; i–) {
            tmp += str.charAt(i);
          }
          return tmp;
        }
      (2) function reverseString(s) {
            var arr = s.split(”);
            var i = 0, j = arr.length – 1;
            while (i < j) {
            var t = arr[i];
            arr[i] = arr[j];
            arr[j] = t;
            i++;
            j–;
          }
        return arr.join(”);
      }

5.数组中最大差值

      function getMaxProfit(arr) {
          var minPrice = arr[0];
          var maxProfit = 0;
          for (var i = 0; i < arr.length; i++) {
              var currentPrice = arr[i];
              minPrice = Math.min(minPrice, currentPrice);
              var potentialProfit = currentPrice – minPrice;
              maxProfit = Math.max(maxProfit, potentialProfit);
          }
        return maxProfit;
      }

6.随机指定长度字符串

      function randomString(n) {
          var str = ‘abcdefghijklmnopqrstuvwxyz9876543210’;
          var tmp = ”;
          var l = str.length;
          for(var i = 0; i < n; i++) {
            tmp += str.charAt(Math.floor(Math.random() * l));
          }
          return tmp;
      }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python

python2/3中 将base64数据写成图片,并将图片数据转为16进制数据的方法、bytes/string的区别

python 3中最重要的新特性可能就是将文本(text)和二进制数据做了更清晰的区分。文本总是用unicode进行编码,以str类型表示;而二进制数据以byt...

4152
来自专栏BestSDK

封装、私有,一文掌握Python关键代码

首先,什么是 Python?根据 Python 创建者 Guido van Rossum 所言,Python 是一种高级编程语言,其设计的核心理念是代码的易读性...

3673
来自专栏编程

Python变量与数据类型

1 Python中数据类型 1、整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:,,...

2796
来自专栏进击的君君的前端之路

字符串与JSON

5363
来自专栏风口上的猪的文章

.NET面试题系列[11] - IEnumerable<T>的派生类

ICollection<T>继承IEnumerable<T>。在其基础上,增加了Add,Remove等方法,可以修改集合的内容。IEnumerable<T>的直...

1112
来自专栏hbbliyong

Python正则进阶

  返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容,如果正则表达式中有分组,则列表中的每个元素是一个元组,元组中包含子分组中匹配到的内容...

1293
来自专栏C++

python笔记:#005#算数运算符

1562
来自专栏C语言C++游戏编程

有人@我,你有一份C语言基础大全手册要领取,快来拿!

前两天,有网友问了我一个关于C语言的问题,本着认真装逼的态度,我把大学时学过的C语言课本翻了一遍,终于找到了答案。整理后,现分享给大家!

1362
来自专栏有趣的Python

3-Java基础语法-运算符

也可以有多个运算符和操作数。sum =num1+num2; 加法运算,赋值运算,sum也是操作数。

942
来自专栏Android群英传

Swift vs. Kotlin 漫谈系列之类与继承

2004

扫码关注云+社区

领取腾讯云代金券