使用js實現插入排序,並分析優化點。

原始版,無優化。

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(排序二叉樹)。下節分析。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章