插入排序

97 阅读1分钟

排序数组:arr = [5, 4, 6, 3, 8, 1, 7, 2, 10, 9]
描述:定义一个数组resArr,将arr里面的每一项与resArr从后向前中的每一项进行比较,如当前arr的这一项大于resArr的这一项,则将arr的当前项添加到resArr当前项的后面。若小于resArr的每一项,则添加到resArr的第一项。

const arr = [5, 4, 6, 3, 8, 1, 7, 2, 10, 9]
function sort(arr) {
    //排好序的数组
    let resArr = [arr[0]]
    for (let i = 1; i < arr.length; i++) {
        // 从当前排好序的最后一项开始比较
        for (let j = resArr.length - 1; j >= 0; j--) {
            /*
                需要排序的数组与当前排好序的数组进行比较
                若大于当排好序的当前项,则添加到当前项的后面一位
            */
            if (arr[i] > resArr[j]) {
                resArr.splice(j + 1, 0, arr[i])
                break
            } 
            /*
                若在排好序的数组中,找到最后一项还是没找到比他小的,
                则添加到排好序数组的第一项
            */
            if(j===0){
                resArr.unshift(arr[i])
            }
        }
    }
    return resArr
}
console.log(sort(arr))