前端算法
前端卡卡西呀
前端从业多年,面向搜索引擎开发,熟练掌握CV大法的拷贝程序员---前端卡卡西
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法系列:5. 二分搜索
/** * @Desc 二分搜索 * 二分搜索 前提是 有序数组 * 从数组中间值开始,如果中间值正好等于搜索值,结束搜索; * 如果搜索值比 中间值大或小,则在大于或小于中间值的那一半数组中继续搜索 */ Array.prototype.binarySort = function (selector) { let low = 0; let high = this.length - 1; while(low <= high) { let midInd原创 2021-11-27 22:35:41 · 381 阅读 · 4 评论 -
算法系列:4. 快速排序
/** * @Desc 快速排序 * 分区:在数组中任意选择一个 ‘基准’,所有比基准值小的放到基准值前边,比基准值大的放在基准值后边 * 递归的对基准前后的数组 进行 “分区” */ Array.prototype.quickSort = function() { const rec = function(arr) { if (arr.length <= 1) { return arr; } const原创 2021-11-04 13:42:29 · 278 阅读 · 1 评论 -
算法系列:3. 归并排序
/** * @Desc 归并排序 * 时间复杂度:O(n*logN) * 分:将数组劈成两半,再递归 对子数组执行‘分’操作,直到分成一个个的数 * 合:将两个数合并成一个有序数组,再对有序数组进行合并,直到全部子数组合并成一个完整的有序数组 * 新建一个空数组res,用来存放最终排序后的数组 * 比较两个有序数组的头部,较小者出队并推入res * 如果两个数组还有值,就重复第二步 */ Array.prototype.mergeSort = function() { con原创 2021-10-24 14:44:25 · 273 阅读 · 0 评论 -
算法系列:2. 插入排序
/** * @Desc 插入排序 * 时间复杂度:O(n^2) * 从第二个数开始往前比 * 有比第二个数小的,往后排 * 从第三个数开始往前比,有比它大的往后排 * 以此类推 进行到最后一个数 */ Array.prototype.insertSort = function() { for (let i=1;i<this.length; i+=1) { let temp = this[i]; let j = i; while原创 2021-10-15 14:34:36 · 205 阅读 · 1 评论 -
算法系列:1. 选择排序
/** * @Desc 选择排序 * 时间复杂度:O(n^2) * 找到数组中最小的值,选中它并将它放到第一位; * 找到数组中第二小的值,选中它并将它放到第二位; * 以此类推,执行 n-1 轮 */ Array.prototype.selectSort = function () { for (let i=0;i<this.length;i+=1) { let minIndex = i; for (let j = i; j < this.原创 2021-09-29 10:17:42 · 221 阅读 · 0 评论 -
aaabbaaacc 最长连续子序列
问题描述: 给定一个字符串 如 'aaabbaaacc', 输出它的最长连续子序列 解题思路: 遍历这个字符串,用一个map 对象存储字符和重复次数,字符为key,重复次数为value; 最后遍历该map对象,取出重复次数最大的即可。 代码实现: let str = 'aaabbaaacc'; function getmax(str) { if (str.length < 2) return ('重复次数最多的是'+str+',重复了:'+str.length + '次'); /原创 2020-12-30 11:04:15 · 820 阅读 · 0 评论 -
js数组全排列(leetcode 46题)
题目链接 问题描述: 给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路:让每一个元素放一次第一位,后边元素排列组合 var permute = function(nums) { let res = []; per(nums,0,nums.length-1,res); retur...原创 2020-07-16 13:11:22 · 1459 阅读 · 1 评论 -
剑指 Offer 38. 字符串的排列
问题描述: 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例: 输入:s = "abc" 输出:["abc","acb","bac","bca","cab","cba"] var permutation = function(str) { let res = new Set(); // 使用set结构去重存储 let path = []; // 存储路径 let visited = []; // 标记访问原创 2020-07-16 12:55:16 · 225 阅读 · 0 评论 -
JS数组乱序的几种方法
1. 使用sort function shuffle(arr) { return arr.sort(() => Math.random() - 0.5) } 2.洗牌算法 先从数组末尾开始,将最后一个元素与前边任意随机元素交换位置; 在已经排好的最后一个元素以外的位置中,随机产生一个位置,让该位置元素与倒数第二个元素进行交换; 循环操作... function shuffle(arr) { for (let i=arr.length;i;i--){ //原创 2020-07-15 11:11:40 · 1624 阅读 · 0 评论
分享