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

来源:互联网 发布:股票基本书籍 知乎 编辑:程序博客网 时间:2024/05/16 08:33

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

 从第一个元素开始 作为一个新的有序列表, 从第二个元素开始和有序列表进行比较,  排序好的第一个和第二个元素 作为新的有序列表, 此次循环结束下一次循环开始, 第三个元素和有序列表排序.......
<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
原创粉丝点击