[Javascript Data Structures] Straight Insertion Sort 直接插入法

每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。

 从第一个元素开始 作为一个新的有序列表, 从第二个元素开始和有序列表进行比较,  排序好的第一个和第二个元素 作为新的有序列表, 此次循环结束
下一次循环开始, 第三个元素和有序列表排序.......
<script type="text/javascript">
  function straightInsertSort(array){
   //从第二个元素开始比较
    for (var i = 1; i < array.length; i++) {    
        console.log("NO."+(i));
        //无序元素和有序列表中元素比较
        for (var j = i; j>0; j--) {
            if (array[j-1]>array[j]){
                swap(array,j);
            }
        console.log(array);
        }           
    }
  }
  function swap(array,j){
    var mid=array[j];
    array[j]=array[j-1];
    array[j-1]=mid;
  }

  var array=[4,10,8,2,1];
  straightInsertSort(array);

</script>

Test:
这里写图片描述


  第一回:
       i=j=1 array[j]=10, 10和4 比较
       有序列表:[4,10]

  第二回:  
       j=2   array[j]=8
       8 和10 比较
       8再和4比较 
       有序列表:[4,8,10]

  第三回:
       j=3   array[j]=2
       2和10,8,4比较
       有序列表:[2,4,8,10]

  第四回:
       j=4   array[j]=1
       1和10,8,4,2比较
       有序列表:[1,2,4,8,10]

时间复杂度:
O(n^2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值