码迷,mamicode.com
首页 > 编程语言 > 详细

排序算法-插入排序(javascript)

时间:2017-12-04 00:01:43      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:适合   i+1   时间复杂度   func   链式存储结构   span   适用于   ++   rip   

思想:每一趟将一个记录插入到已经排好序的一组记录的适当位置上,知道所有待排序记录都插入为止。

function insertSort(arr){
    for(var i=2;i<=arr.length;i++){
        if(arr[i]<arr[i-1]){ //小于时插入
            arr[0]=arr[i];   //将待插入的记录暂存到监视哨
            arr[i]=arr[i-1]; //arr[i-1]后移
            for(var j=i-2;arr[0]<arr[j];--j){ //从后往前寻找插入位置
                arr[j+1]=arr[j];   //记录逐个后移,知道找到插入位置
            }
            arr[j+1]=arr[0]; //将arr[0]即原arr[i]插入正确位置
        }
    }
    return arr;
}

时间复杂度:

排序的基本操作为:比较两个关键字和移动。最好的情况:正序。比较1次,不移动。最坏情况:逆序。比较i次(i-1加哨兵),移动i+1次(i-1加将待插入的移到监视哨加从监视哨移出)。对于整个排序过程:最好情况下,比较次数n-1,不移动。最坏n^2/2次,n^2/2次。因此时间复杂度为O(n^2)

空间复杂度:

只需要一个记录的辅助空间arr[0],所以空间复杂度为O(1)

算法特点:

1.稳定排序。

2.简便易实现。

3.也适用于链式存储结构。

4.更适合初始记录基本有序的情况。初始记录无序,n较大时,时间复杂度较高,不适用。

 

排序算法-插入排序(javascript)

标签:适合   i+1   时间复杂度   func   链式存储结构   span   适用于   ++   rip   

原文地址:http://www.cnblogs.com/PeriHe/p/7967777.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!