前端算法之数组排序

·  阅读 102

数组排序一直是前端面试中经常出现的问题,而大家可能经常用的就是sort排序,所以我又总结两种排序方式,加上sort排序,一并写了下来。


第一种方法:冒泡排序
逻辑步骤:
1、使用双层for循环加if判断
2、依次拿数组里面的一项去跟数组里面的每一项做比较运算,符合判断条件的,交换两项的位置。

let arr = [9, 5, 1, 4, 8, 6, 2, 7, 3, 0, '2', '3'];
function sorting(a) {
	// 判断数组是否存在,如果存在就获得数组长度
    var arrLength = a && a.length
    // 使用双层循环
    for(let i = 0; i < arrLength - 1; i++) {
        for(let j = i + 1; j < arrLength; j++) {
        	// if 判断 拿一项去跟数组每一项比较,大于号是正序,小于号是倒序
            if(a[i] > a[j]) {
            	// 如果符合判断条件,使用ES6解构赋值交换位置
                [a[i], a[j]] = [a[j], a[i]];
            }
        }
    };
    return a;
} 
复制代码

第二种方法:插入法排序
插入排序跟冒泡排序都是使用双层for循环if判断,插入法排序是拿数组的后边一项和前面一项对比,如果符合条件就交换位置,而冒泡排序是即那数组的前一项和后一项对比。接下来看代码

function sorting(a) {
    var arrLength = a && a.length
    for(let i = 1; i < arrLength; i++) {
        for(let j = i; j > 0; j--) {
            if(a[j] < a[j - 1]) {
                [a[j], a[j - 1]] = [a[j - 1], a[j]]
            };
        };
    };
    return a;
}
复制代码

第三种方法:sort排序

function sorting(a) {
    return a.sort((a, b)=> {
    	// a - b正序 b - a倒序
        return a - b;
    })
}
复制代码

数组排序就整理到这,大家如果有什么其他的方法,可能留言也可以私聊,大家相互学习,共同进步。

分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改