博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js排序算法02——插入排序
阅读量:4969 次
发布时间:2019-06-12

本文共 1031 字,大约阅读时间需要 3 分钟。

插入排序的思路是我们默认数组的第一个元素是有序的,从第二个元素开始依次和前面的元素比较,如果前面的元素大,就将前面的元素往后移一位,如果前面的元素小,就把该元素放在前面元素的后面。其实就和我们玩扑克牌差不多的,每次拿牌后,把大牌放后面,小牌放前面。按照这个思路,实现了如下代码:

function insertSort(arr){    if(!Array.isArray(arr)){        return false;          //类型判断    }    else{        var result=[];                //定义一个新数组        result.push(arr[0]);       //默认第一个为有序的        for (var i = 1; i < arr.length; i++) {            var lgh = result.length-1;            for (var j = lgh; j >= 0; j--) {                if(arr[i]

实现了之后看到大佬的文章好像都没定义新的数组,感觉很厉害的样子,于是又优化了自己的代码,优化后的代码如下

function insertSort(arr){    if(!Array.isArray(arr)){        return false;          //类型判断    }    else{        for (var i = 1; i < arr.length; i++) {            var current = arr[i];            var j = i-1;            while(current
= 0){ arr[j+1] = arr[j]; j--; } arr[j+1] = current; } return arr; } }

算法分析:最好的情况(已经是顺序)时间复杂度为O(n),最坏的情况(逆序),时间复杂度为O(n2).

转载于:https://www.cnblogs.com/renbo/p/8228361.html

你可能感兴趣的文章