插入排序,是分別取陣列中每一項元素,進行比較排序,依次插入到對應位置。
可從左向右比較,也可從右向左比較,下圖是從右向左比較示意。
**實現有很多種方式,如下是從小到大排序示例
無差別統一插入,外迴圈每次都從陣列左側向右側遍歷,內迴圈從陣列 i - 1 向左遍歷,遍歷次數因i增加逐漸增大,且每次都是完全遍歷,效率最低,會改變原陣列。
var a = [4,3,9,2,6,1,7,2]
function insetsort(arr)
}arr.splice(index, 0, arr[i]) // 插入元素的位置
arr.splice(i + 1, 1) // 從小到大排序,且i大於等於index,插入的元素原本在的位置後移一位
}}insetsort(a)
滿足條件插入,每次都從陣列左側(最小側)向右(最大側/未排序側)遍歷,遍歷次數因i增加逐漸增大,插入後即跳出迴圈,效率相對較低,會改變原陣列。
var a = [4,3,9,2,6,1,7,2]
function insetsort2(arr) }}}
insetsort2(a)
儲存排序後的新陣列(統一在內迴圈後插入),每次從排序後的新陣列左側向右遍歷比較,滿足條件跳出迴圈,效率較高,不改變原陣列
var b = [5,1,1,2,0,0]
function insertsort3(nums) {
var handle = ; // 使用新陣列,儲存排序後的陣列
for (let i = 0; i < nums.length; i++) {
var index = 0
for(let j = 0; j < handle.length; j++){
index = j + 1 // 預設原陣列元素大,插入到新陣列元素的後面
if(nums[i]儲存排序後的新陣列(使用標識判斷在內迴圈後是否還需插入),每次從排序後的新陣列左側向右遍歷比較,滿足條件跳出迴圈,效率較高,不改變原陣列
var b = [5,1,1,2,0,0]
function insertsort4(nums) {
var handle = ;
for (let i = 0; i < nums.length; i++) {
var flag = false // 預設沒有比該元素大的
for(let j = 0; j < handle.length; j++){
if(nums[i]參考文章
JS 插入排序
插入排序 insertion sort 是一種簡單直觀且穩定的排序演算法。如果有乙個已經有序的資料序列,要求在這個已經排好的資料序列中插入乙個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法 插入排序法,插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新...
js插入排序
一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 動態演示 實現 let array randomarray 1,100 console.log array let sortarray insertionsort array console.log sortarray fun...
Js 排序演算法 插入排序
將記錄按其關鍵字得大小插入到乙個有序的記錄序列中,插入後仍有序 從待排序的n個記錄中的第二個記錄開始,依次與前面的記錄比較並尋找插入的位置,每次外迴圈結束後,將當前的數插入到合適的位置。特點 n值較小的時候效率高 n較大時,若待排的記錄按關鍵字基本有序時效率仍然較高。穩定性 穩定排序。最好情況 當待...