首页 / 算法 / 一些前端必备数据结构算法
一些前端必备数据结构算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了一些前端必备数据结构算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3304字,纯文字阅读大概需要5分钟。
内容图文
![一些前端必备数据结构算法](/upload/InfoBanner/zyjiaocheng/624/93f28460e03d4f2f87f415705574899a.jpg)
1.快排
function quickSort(arr) {
if(arr.length<=1) {
return arr;
}
var s = Math.floor(arr.length/2);
var temp = arr.splice(s,1);
var left=[];
var right=[];
for(var i=0;i<arr.length;i++) {
if(arr[i]<temp) {
left.push(arr[i]);
}
if(arr[i]>=temp) {
right.push(arr[i]);
}
}
return quickSort(left).concat(temp,quickSort(right));
}
2.插入排序
function insertSort(arr) {
if (Array.isArray(arr)) {
for (var i = 1; i < arr.length; i++) {
var preIndex = i - 1;
var current = arr[i]
while (preIndex >= 0 && arr[preIndex] > c) {
arr[preIndex + 1] = arr[preIndex];
preIndex--;
}
arr[preIndex + 1] = current;
}
return arr;
}
}
3.选择排序
function selectSort(arr) {
if (Array.isArray(arr)) {
for (var i = 0; i < arr.length - 1; i++) {
var minIdex = i;
for (var j = i + 1; j < arr.length; j++) {
minIdex = arr[j] < arr[minIdex] ? j : minIdex;
}
[arr[i], arr[minIdex]] = [arr[minIdex], arr[i]];
}
return arr;
}
}
4.希尔排序
function shellSort(arr) {
var len = arr.length,temp,gap = 1;
// 动态定义间隔序列,也可以手动定义,如 gap = 5;
while (gap < len / 5) {
gap = gap * 5 + 1;
}
for (gap; gap > 0; gap = Math.floor(gap / 5)) {
for (var i = gap; i < len; i++) {
temp = arr[i];
for (var j = i - gap; j >= 0 && arr[j] > temp; j -= gap) {
arr[j + gap] = arr[j];
}
arr[j + gap] = temp;
}
}
return arr;
}
5.数组的扁平化:将多维数组变成一维数组
方法一:递归一
function parseArr(arr,res){
var i=0;
for(i=0;i<arr.length;i++){
if(arr[i] instanceof Array){
parseArr(arr[i],res);
}else{
res.push(arr[i]);
}
}
}
var a=[1,[2,[3,4]],5,6];
var res=[];
parseArr(a,res);
递归二(推荐)
var arr = ['mu','zi',['dig',['big','love']]]
function flatten(arr){
var res = [];
for(var i=0;i<arr.length;i++){
if(Array.isArray(arr[i])){
res = res.concat(flatten(arr[i]));
}else{
res.push(arr[i]);
}
}
return res;
}
console.log(flatten(arr))//["mu", "zi", "dig", "big", "love"]
6.树的三种简单遍历
先序遍历
let result = [];
let dfs = function (node) {
if(node) {
result.push(node.value);
dfs(node.left);
dfs(node.right);
}
}
中序遍历
let result = [];
let dfs = function (node) {
if(node) {
dfs(node.left);
result.push(node.value); // 直到该结点无左子树 将该结点存入结果数组 接下来并开始遍历右子树
dfs(node.right);
}
}
后序遍历
result = [];
function dfs(node) {
if(node) {
dfs(node.left);
dfs(node.right);
result.push(node.value);
}
}
内容总结
以上是互联网集市为您收集整理的一些前端必备数据结构算法全部内容,希望文章能够帮你解决一些前端必备数据结构算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。