Javascript之常见算法整理(持续更新)-柠檬味的前端-SegmentFault思否
程序员文章站
2022-06-13 14:54:58
一、排序
冒泡排序
//冒泡排序
function bubblesort(arr) {
for(var i = 1, len = arr.length; i < le...
一、排序
冒泡排序
//冒泡排序 function bubblesort(arr) { for(var i = 1, len = arr.length; i < len - 1; ++i) { for(var j = 0; j <= len - i; ++j) { if (arr[j] > arr[j + 1]) { let temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } }
快速排序
//快速排序 function qsort(arr) { //声明并初始化左边的数组和右边的数组 var left = [], right = []; //使用数组第一个元素作为基准值 var base = arr[0]; //当数组长度只有1或者为空时,直接返回数组,不需要排序 if(arr.length <= 1) return arr; //进行遍历 for(var i = 1, len = arr.length; i < len; i++) { if(arr[i] <= base) { //如果小于基准值,push到左边的数组 left.push(arr[i]); } else { //如果大于基准值,push到右边的数组 right.push(arr[i]); } } //递归并且合并数组元素 return [...qsort(left), ...[base], ...qsort(right)]; //return qsort(left).concat([base], qsort(right)); }
二、字符串
回文字符串
//判断回文字符串 function palindrome(str) { var reg = /[\w\_]/g; var str0 = str.tolowercase().replace(reg, ""); var str1 = str0.split("").reverse().join(""); return str0 === str1; }
翻转字符串
function reversestring(str) { return str.split("").reverse().join(""); }
字符串中出现最多次数的字符
function findmaxduplicatechar(str) { var cnt = {}, //用来记录所有的字符的出现频次 c = ''; //用来记录最大频次的字符 for (var i = 0; i < str.length; i++) { var ci = str[i]; if (!cnt[ci]) { cnt[ci] = 1; } else { cnt[ci]++; } if (c == '' || cnt[ci] > cnt[c]) { c = ci; } } console.log(cnt) return c; }
三、数组
数组去重
//数组去重 function uniquearray(arr) { var temp = []; for (var i = 0; i < arr.length; i++) { if (temp.indexof(arr[i]) == -1) { temp.push(arr[i]); } } return temp; //or return array.from(new set(arr)); }
四、查找
二分查找
//二分查找 function binary_search(arr, l, r, v) { if (l > r) { return -1; } var m = parseint((l + r) / 2); if (arr[m] == v) { return m; } else if (arr[m] < v) { return binary_search(arr, m+1, r, v); } else { return binary_search(arr, l, m-1, v); } }
五、搜索
深度优先搜索
//深搜 非递归实现 function deeptraversal(node) { var nodelist = []; if (node) { var stack = []; stack.push(node); while(stack.length != 0) { var childrenitem = stack.pop(); nodelist.push(childrenitem); var childrenlist = childrenitem.children; for (var i = childrenlist.length-1; i >= 0; i--) { stack.push(childrenlist[i]); } } } return nodelist; }
广度优先搜索
//广搜 function widetraversal(node) { var nodes = []; if (node != null) { var queue = []; queue.unshift(node); while (queue.length != 0) { var item = queue.shift(); nodes.push(item); var children = item.children; for (var i = 0; i < children.length; i++) queue.push(children[i]); } } return nodes; }
持续更新中~~~
上一篇: 小米9S?小米新机入网:小米9同款外形、支持5G、4000mAh电池
下一篇: 简单的渐变轮播插件