JavaScript数组常用排序方法

1、冒泡排序

遍历元素,跟其下一个元素对比
把最大的逐个往后排列

let arr = [5, 3, 6, 9, 2, 1, 8]
for(let i = 0; i < arr.length-1; i++){
    for(let j = 0; j < arr.length-1; j++){
        if(arr[j] > arr[j+1]){
            var current = arr[j]
            arr[j] = arr[j+1]
            arr[j+1] = current
        }
    }
}

2、选择排序

把当前元素分别跟后面所有的元素对比
把最小的逐个往前排列

let arr = [5, 3, 6, 9, 2, 1, 8]
for(let i = 0; i < arr.length; i++){
    for(let j = i+1; j < arr.length; j++){
        if(arr[i] > arr[j]){
            var current = arr[i]
            arr[i] = arr[j]
            arr[j] = current
        }
    }
}

3、快速排序

let arr = [5, 3, 6, 9, 2, 1, 8]
function fastSort(arr) {
    // 退出递归并
    if(arr.length <= 1) return arr
    // 找中间元素位置
    let index = parseInt(arr.length / 2) 
    // 拿出中间的元素,所有元素跟这个元素比较
    let brr = arr.splice(index, 1)
    // 小于的放一个数组
    let crr = []
    // 大于或者等于的放一个数组
    let drr = []
    for(let i = 0; i < arr.length; i++){
        if(arr[i] < brr[0]){
            crr.push(arr[i])
        }else{
            drr.push(arr[i])
        }
    }
    // 递归 合并排序好的数组
    return fastSort(crr).concat(brr, fastSort(drr))
}
fastSort(arr) 

4、sort()排序

let arr = [5, 3, 6, 9, 2, 1, 8]
arr.sort((a, b) => a - b)

你可能感兴趣的:(JavaScript数组常用排序方法)