javaScript數據結構和算法--插入排序

插入排序每次排一個數組項,類似平時抓牌的模式,假設第一項已經是排好序的,接著第二項和第一項比較,如果第二項比第一項小,則第二項插入第一項,以此類推,選中接下來的數,和前面已經排好序的數進行比較,一旦找到一旦這個數比待比較的數小,則把這個數插入。

插入排序的代碼實現:

function InsertSort() {

? ? const array = [];

? ? this.insert = function(item) {

? ? ? ? array.push(item);

? ? }

? ? this.toString = function() {

? ? ? ? return array.join();

? ? }

? ? this.insertSort = function() {

? ? ? ? const length = array.length;

? ? ? ? let temp,j;

? ? ? ? for(let i=1; i<length; i++) { // 從1開始,假定第一個數已經排好序了

? ? ? ? ? ? j = i;

? ? ? ? ? ? temp = array[j];

? ? ? ? ? ? while(j>0 && array[j-1] > temp) {

? ? ? ? ? ? ? ? array[j] = array[j-1];

? ? ? ? ? ? ? ? j--;

? ? ? ? ? ? }

? ? ? ? ? ? array[j] = temp;

? ? ? ? }

? ? }

}

var arr = new InsertSort();

arr.insert(3);

arr.insert(13);

arr.insert(32);

arr.insert(23);

arr.insert(11);

arr.insert(8);

arr.insert(33);

arr.insert(28);

console.log(arr.toString()); // 3,13,32,23,11,8,33,28

arr.insertSort();

console.log(arr.toString()); // 3,8,11,13,23,28,32,33

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容