將記錄按其關鍵字得大小插入到乙個有序的記錄序列中,插入後仍有序;
從待排序的n個記錄中的第二個記錄開始,依次與前面的記錄比較並尋找插入的位置,每次外迴圈結束後,將當前的數插入到合適的位置。特點:①n值較小的時候效率高;②n較大時,若待排的記錄按關鍵字基本有序時效率仍然較高。
穩定性:穩定排序。
最好情況:當待排序記錄已經有序。
最壞情況:如果待排序記錄為逆序。
時間複雜度為:o(n2)
function d_insert(record,n)
record[j+1]=temp;
}return record;
}
function b_insert(record,n)
record[high+1]=temp;
} console.log(record);
return record;
}
shell排序法是對相鄰指定距離(稱為增量)的元素進行比較,並不斷把增量縮小至1,完成排序。
希爾排序的基本思想是
將需要排序的序列劃分成為若干個較小的子串行,對子序列進行插入排序,通過則插入排序能夠使得原來序列成為基本有序。這樣通過對較小的序列進行插入排序,然後對基本有序的數列進行插入排序,能夠提高插入排序演算法的效率。
特點:每一趟以不同的增量進行排序;
不穩定排序;
//希爾排序
function shellsort(record)
record[j+gap]=temp;// 經歷了上層的for迴圈,j=j-gap;所以為了將temp放到合適的位置,要還原j
}gap=math.floor(gap/2);
} console.log(record);
return record;
}
js排序演算法詳解 插入排序
js系列教程5 資料結構和演算法全解 插入排序的原理其實很好理解,可以模擬選擇排序。選擇排序時在兩個空間進行,等於說每次從舊的空間選出最值放到新的空間,而插入排序則是在同一空間進行。可以這麼理解,在乙個陣列中我們不知道哪個是最小值,那麼就假定第乙個就是最小值,然後取第二個值與第乙個值比較產排序後的序...
Js 排序演算法 插入排序和希爾排序
企業招聘筆試和面試的時候很喜歡問到排序演算法,時間複雜度,空間複雜度,穩定性,巴拉巴拉。說到排序演算法,那可是大一時候剛接觸c 語言 得有四五年了吧,有點暴露年齡,哈哈哈 學到的東西了,中間一直也沒有用過,基本上不記得多少了。所以特意花了一天多的時間來回顧一下排序演算法,這一篇就先說下插入排序和希爾...
js實現插入排序演算法
假定有這麼乙個陣列 let ary 12 8,24 16,1 插入排序的做法類似於我們平時打的撲克 先從陣列中抽一張 牌 12 再抓一張牌 與之前抓到的牌依次比較 如果當前新牌a比手裡的某張牌b大,則把a放到b的後面,如果小則繼續向前面的牌比 前提 如果已經比較到第一張了,則把當前牌a插入到最前面即...