插入排序之 直接插入排序

2021-09-22 18:07:50 字數 822 閱讀 1346

當前有乙個有序陣列序列。如果我們想要往裡面新增乙個資料,並且新增完後的陣列序列依舊有序。這就要用到直接插入排序。

將陣列邏輯上分為兩個區間:待排序區間和已排序區間。

預設陣列第乙個元素已經有序,歸屬於已排序區間。然後將待排序區間的第乙個資料拿出來,和已排序區間的最後乙個數相比(此處以公升序為例)。

如果滿足公升序,則待排序區間的這個數就認為它有序了,將它劃分到已排序區間,開始下一次比較。

如果不滿足公升序,則待排序區間資料再和已排序區間的倒數第二個資料比較,依次類推,直到找到合適的位置,再將待排序資料插入。

public

static

void

insertsort

(int

array)

else

else

}//找到要插入的位置,並將本次待排序的數插入

array[j +1]

= value;}}

}

最好:陣列序列本來就有序,當前陣列所有資料已經屬於已排序區間。

插入的資料剛好大於陣列的最後乙個元素,插入資料放在序列最後即可。因為我們從尾到頭遍歷,只需和陣列最後乙個元素比較一次。時間複雜度為o(n)。

最壞:陣列是降序(假設要求公升序),我們先要把原陣列資料都進行搬移,每次都相當於在陣列頭插入資料。時間複雜度為o(n^2)。

因為插⼊排序演算法的運⾏並不需要額外的儲存空間,所以空間複雜度是o(1)。

**中只有出現降序時,才產生資料搬移。當出現多個相等資料時,不會產生搬移,可以保持相等資料的原有前後順序不變,所以是穩定的

插入排序之直接插入排序

插入排序概述 有乙個已經有序的資料序列,要求在這個已經排好的資料序列中插入乙個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法 插入排序法,插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複雜度為...

插入排序之直接插入排序

依次將每個記錄 無序表 插入到乙個已排好序的有序表中,得到乙個新的,記錄增加1的有序表 向撲克牌中插入新牌,圖書館整理圖書 有n個數,將第乙個數看做乙個有序表,從第二個開始從後向前比較,第一趟比較前兩個數,然後把第二個數按大小插入到有序表中 第二趟把第三個資料與前兩個數從後向前掃瞄,把第三個數按大小...

插入排序之直接插入排序

packagesort.algorithm publicclassdirectinsertsort inttemp,j for int i 1 i data.length i data j 1 temp 輸出排序好的資料 for int k 0 k data.length k 直接插入排序,一般對於...