每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。
从第一个元素开始 作为一个新的有序列表, 从第二个元素开始和有序列表进行比较, 排序好的第一个和第二个元素 作为新的有序列表, 此次循环结束
下一次循环开始, 第三个元素和有序列表排序.......
<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)