美文网首页
插入排序

插入排序

作者: 苏码码 | 来源:发表于2022-01-21 15:30 被阅读0次

    1.循环将数组分成两个区域,排序区和未排序区域,每一轮从未排序区域取出来一个值,插入到排序区域
    2.优化:待插入元素进行比较时,遇到比自己小的元素,就代表找到了插入位置,无需进行后续比较
    注意:插入事直接移动元素,而不是交换元素

          window.onload = function() {
    
                var arr = [2,4,9,1,7,3,6,8,5]
                // 插入排序
                insertSort(arr)
          }
    
    
          // 插入排序
            function insertSort(arr) {
    
                for (let i = 1; i < arr.length; i++) {
                    // 记录待插入的元素值
                    var tmp = arr[i]
                    // 代表已排序区域的元素索引
                    var j = i - 1
                    console.log(`第${i}轮循环`)
                    while (j >= 0) {
                        console.log(`~~~第${j}次比较~~~~~`)
                        // 当待插入值小于已排序区域的值时,就代表找到了插入位置
                        if (tmp < arr[j]) {
                            arr[j + 1] = arr[j]
                        } else {
                            // 退出当前循环,减少比较次数
                            break
                        }
                        j--
                    }
                    arr[j+1] = tmp
                    
                }
                console.log(arr)
            }
    

    相关文章

      网友评论

          本文标题:插入排序

          本文链接:https://www.haomeiwen.com/subject/kriehrtx.html