原始版,無優化。
function insertSort(ary) {
for(var i = 1; i< ary.length; i++) { //要排序的數
for(var j = 0; j < i; j++) { //查找要放在那個位置
if(ary[i] <= ary[j]) {
var index = j
break
}
}
var tmp = ary[i]
for(var k = i - 1; k >= j; k--) { //挪動元素
ary[k + 1] = ary[k]
}
ary[j] = tmp
}
return ary
}
優化點一: 隨着排序的進行,前面有序的元素越來越多,"查找要放在那個位置"這一步,可以是用二分查找進行優化。
優化點二: "挪動元素"的步驟可以使用鏈表,對插入操作進行優化。
綜上所述,要想同時解決查找和插入問題,就引入了bst(排序二叉樹)。下節分析。