实现一个冒泡排序

103 阅读1分钟
function swap(A, i, j) {
    let p = A[i]
    A[i] = A[j]
    A[j] = p
}

function sort(A) {
    /**
     * 过程拆解
     * i第一次遍历
     * i = 2  A[i]=3
     * j = 0  小于i, 也就是遍历A的第一项和第二项
     * 这次一次遍历,我们发现5是最大的数,所以我们把A[i](i为2)和A[j](j为0)的位置做了交换 [ 3,2, 5 ]
     * i第二次遍历
     * i = 1 A[1]= 2
     * j = 0  小于i, 也就是遍历A的第一项
     * 这次一次遍历,我们发现3是最大,所以我们把A[i](i为1)和A[j](j为0)的位置做了交换 [ 2,3 5 ]
     */
    for ( let i = A.length - 1; i >= 1; i--) {
        for ( let j = 0; j < i; j++ ) {
            // 如果i 比 j大 交换位置
            if ( A[i] < A[j] ) swap(A, i, j)

        }
        // 循坏结束,排序完成
    }
}

const arr =  [ 5, 2, 3]

sort(arr)

// 结果 [ 2, 3, 4]
console.log(arr)