美文网首页
js相关算法(持续更新)

js相关算法(持续更新)

作者: 未來Miral | 来源:发表于2018-08-01 09:28 被阅读0次
// 回文
function palindrome(str){
           let str2 = str;
           str2 = str2.split('').reverse();
           str2.shift();
           str2 = str2.join('');
           return str + str2;
}

// 数组去重
// ES6写法
function notDuplication(arr){
            return Array.from(new Set(arr));
}
// ES5写法
function notDuplication(arr){
            let newArr = [];
            for(let i in arr){
                if(arr[i] in newArr){}
                else{
                    newArr[arr[i]] = true;
                }
            }
            return Object.keys(newArr);
}

// 字符串中出现次数最多的字符
function maxTime(str){
            let arr = str.split('');
            let newArr = [];
            let maxValue = 0;
            let maxIndex;
            for(let i in arr){
                arr[i] in newArr ? newArr[arr[i]]++ : newArr[arr[i]] = 1;
            }
            for(let i in newArr){
                if(newArr[i] > maxValue){
                    maxValue = newArr[i];
                    maxIndex = i;
                }
            }
            return maxIndex;
}

// 随机生成指定长度的字符串
function randomStr(len){
            function randomIndex(arrLen){
                let index = parseInt(Math.random() * 100);
                return index = index > arrLen - 1 ? randomIndex(arrLen) : index;
            }
            let letter = 'abcdefghijklmnopqrstuvwxyz1234567890';
            let letterArr = letter.split('');
            let newStr = '';
            for(let i = 0;i < len;i++){
                newStr += letterArr[randomIndex(letterArr.length)]
            }
            return newStr;
}

// 冒泡排序
function bubbling(arr){
            for(let i = 0;i < arr.length - 1;i++){
                for(let j = 0;j < arr.length - 1 - i;j++){
                    if(arr[j] > arr[j+1]){
                        let temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
            }
            return arr;
}

// 选择排序
function selected(arr){
            let minIndex,temp;
            for(let i = 0;i < arr.length - 1;i++){
                minIndex = i;
                for(let j = i + 1; j < arr.length; j++){
                     if(arr[j] < arr[minIndex]){
                         minIndex = j;
                     }
                }
                temp = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = temp;
            }
            return arr;
}

// 实现字符串翻转
        function reverseStr(str){
            let newStr = '';
            for(let i = str.length - 1;i >= 0;i--){
                newStr += str[i];
            }
            return newStr;
        }

// 数组中最大差值
        function maxDiff(arr){
            let max = arr[0];
            let min = arr[0];
            for(let i = 0;i < arr.length;i++){
                if(arr[i] > max){
                    max = arr[i];
                }
                if(arr[i] < min){
                    min = arr[i];
                }
            }
            return max - min;
        }

// 阶层
// 递归实现
function factorial(num) {
            if(num < 0){
                return -1;
            }
            else if(num == 0 || num == 1){
                return 1;
            }
            else{
                return num * factorial(num-1);
            }
}
// 普通实现
function factorial(num){
            if (num < 0) {
                return -1;
            }
            else if (num == 0 || num == 1) {
                return 1;
            }
            else{
                let result = 1;
                for (let i = 1; i <= num - 1; i++) {
                    result = result * (i + 1);
                }
                return result;
            }
}

// 斐波那契数列(黄金分割点)
        function fibonacci(n){
            let arr = [];
            for(let i = 0;i < n;i++){
                i < 2 ? arr.push(i) : arr.push(arr[i - 1] + arr[i - 2]);
            }
            return arr;
        }

相关文章

  • js相关算法(持续更新)

  • 算法相关(持续更新)

    查找两个子视图的共同父视图 分析:可以反过来理解,两个子视图有共同父视图,那就说明共同父视图往下的父视图都相同,所...

  • 算法相关笔记,持续更新中...

    单链表 1.删除单链表中的指定节点: 2.单链表中删除指定数值的节点方法一:利用栈 3.单链表中删除指定数值的节点...

  • Weex开发系列之文档整理

    该文章将持续记录更新Weex相关文档、Github、博客等干货资源,欢迎大家一起提供干货 1 JS相关 1.1 M...

  • Sort-Bubble Sort 冒泡排序

    算法相关GitHub持续更新,欢迎打脸~ 排序算法之冒泡排序 时间复杂度:O(n2) 空间复杂度:O(1) 是否稳...

  • Sort-Quick Sort 快速排序

    算法相关GitHub持续更新,欢迎打脸~ 排序算法之选择排序 时间复杂度:O(n2) 空间复杂度:O(1) 是否稳...

  • Sort-Selection Sort 选择排序

    算法相关GitHub持续更新,欢迎打脸~ 排序算法之选择排序 时间复杂度:O(n2) 空间复杂度:O(1) 是否稳...

  • 垃圾回收器

    持续更新... 打算从以下几个方面学习垃圾回收器相关的知识 一、GC两种算法 1.1 引用计数算法 给对象中添加一...

  • python面试题大全

    持续更新中... 算法部分:

  • 排序算法综述

    算法相关GitHub持续更新,欢迎打脸~算法是从事程序开发人员永远绕不过去的一道门。虽然很多时候我们都会说,算法这...

网友评论

      本文标题:js相关算法(持续更新)

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