直接插入排序是一種最簡單的排序演算法,在後續我會繼續發布其他的簡單排序;直接插入的演算法基本思想是:僅有乙個元素的序列總是有序的,因此,對n個記錄的序列,可從第二個元素開始直接到第n個元素,逐個向有序序列中執行插入操作,從而得到n個元素按關鍵字有序的序列。一般來說,在含有j-1個元素的有序序列中插入乙個元素的方法是:從第j-1個元素開始依次向前搜尋應當插入的位置,並且在搜尋插入位置的同時可以後移元素,這樣當找到適當的位置時,即可插入元素。
或許上面的講解比較官方一點,說的通俗一點,給你乙個無序的陣列,或者一段需要排序的序列,我們通常用第乙個元素作為參考值,從第二個元素開始和這個參考值進行比較,比這個參考值大的時候放在這個參考值的後面,比這個參考值小的時候在和這個參考值的前一位進行比較,當比較至適當位置進行插入。下面是我偷來的一張圖:
下面是書上給的乙個直接插入的演算法例子:
輸入:陣列元素陣列r,陣列r的待排序區間[low,high]
輸出:陣列r以關鍵字有序
public void insertsort(object r,int low,int high)
r[j+1] = temp;//插入到正確位置}}}
這是書上的演算法,但是個人感覺看起來比較生澀,所以自己寫了乙個例子,進行對比,
public class zhijiecharupaixu ;
insertsort(a,0,a.length);
for(int n : a)
}/**直接插入排序**/
public static void insertsort(int object,int low,int high)
//比較完成後獲得j最後的位置
object[j+1] = temp;}}
}}
和書上的進行對比,感覺,i-1位置的數值不用賦值給i位置
現在對我寫的這個例子進行分析:
前三個位置的數字是從小到大一次進行排序的,在if(object[i] < object[i-1]條件下不會進行排序,直接對最後位置的0和前面的數值進行比較,直觀來看,排序之後應該是0,1,2,3這樣乙個順序。進入迴圈後第一次迴圈:
這是通過斷點,進行的分析,最後一次的插入的位置正是第乙個位置(可以自己換成其他的資料進行檢驗)
Java 直接插入排序
直接插入排序就是直接將乙個數插入到有序的 序列中,對於陣列n,可你看作是兩個序列,第乙個序列是陣列的第乙個元素,第二個序列是原陣列,將第二個序列依次插入到第乙個序列中,下面實現 方法 sort方法是將乙個元素讓入到有序數列中,insertsort方法是對整個陣列的操作 public class in...
java 直接插入排序
直接插入排序是指 將乙個新記錄插入到已經排好序的列表中 他的具體操作是 如果乙個資料比它前面的資料要小,則將該資料向前移動。直接插入排序 author 半知半行 public static void straightinsertionsort int sorts else sorts pos t 測...
java插入排序 直接插入排序
直接插入排序演算法思路是 待排序記錄 r1,r2,rn 1,rn 第一步 將無序表打第乙個元素作為乙個有序表。第二步 將r2加入到有序表中,使有序表依舊有序 第 n 步 r1,r2,rn 1 rn 以此類推。直接插入排序演算法的時間複雜度,最好的情況是待排序記錄是有序的,o n 最壞打情況是記錄從大...