加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

JS实现直接插入排序

发布时间:2020-12-14 23:51:42 所属栏目:资源 来源:网络整理
导读:插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 JS的实现代码: function insertionSort(arr) { var len = arr.length,preIndex,cur; for (var i = 1; i len; ++i) { preIndex = i - 1; cur = arr[i]; wh

插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。

JS的实现代码:

function insertionSort(arr) {
    var len = arr.length,preIndex,cur;
    for (var i = 1; i < len; ++i) {
        preIndex = i - 1;
        cur = arr[i];
        while (preIndex >= 0 && arr[preIndex] > cur) {
            arr[preIndex + 1] = arr[preIndex];
            preIndex--;
        }
        arr[preIndex + 1] = cur;
    }
    return arr;
}

比如,现在我们传入一个[2,5,8,4,1]的数组,

外层第一次循环,i为1,内层循环不满足条件,退出第一次循环,

外层第二次循环,i为2,内层循环不满足条件,退出第二次循环,

外层第三次循环,i为3,因为8 > 4,所以移动8,数组变成[2,1],因为5 > 4,移动,数组变为[2,1],因为2 < 4,所以数组变为[2,1],退出第三次循环,

外层第四次循环,i为4,因为8 > 1,所以移动8,数组变为[2,8],又5 > 1,数组变为[2,8],因为4 < 1,所以数组变为[2,8],有因为2 ?> 1,所以数组变为[2,2,8],退出循环,此时preIndex的值是-1,最后给arr[0]赋值,得到[1,8]。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读