什麼是插入演算法?這個具體跟選擇排序有點類似,但是有又一些差別。每一次插入,都要為插入的元素騰出空間,所以我們需要將其餘所有元素在插入之前都要向右移動一位。與選擇排序一樣,當前索引左邊的所有元素都是有序的,但是最終位置還不確定。為了給更小的元素騰出空間,它們都有可能被移動,但是索引到陣列右端時,陣列的排序就完成了。如果還聽不懂,可以閉著眼想一想你們在玩鬥地主或者打麻將的時候是怎麼樣排序的。
具體實現從簡單的**說起:
public class insertsortmain ; //定義乙個陣列
for(int i = 1 ;i0;j--)
}system.out.print("第"+ i +"次排序:");
for(int k = 0;k < a.length;k++)
system.out.println();
} }}
輸出結果:
插入排序和選擇排序相比,如果資料比較多,但是已經有些元素已經是有序的排列的,所占用時間會比較少。
另外一種用函式的設計:
public class insertsort ;
insertsort(a);
show(a);
} public static void insertsort(comparable a)
} }/**
* less()方法對元素進行比較
* @param v
* @param w
* @return
*/private static boolean less(comparable v,comparable w)
/*** 該方法將元素交換位置
* @param a
* @param i
* @param j
*/private static void exch(comparable a,int i ,int j)
/*** 遍歷函式
* @param a
*/private static void show(comparable a) {
for(int i = 0;i本教程參考圖書:演算法(第四版)
排序演算法入門之 插入排序
借用 演算法導論 裡的例子,就是我們打牌的時候,每新拿一張牌都會把它按順序插入,這,其實就是插入排序。齊姐宣告 雖然我們用打牌的例子,但是可不能學胡適先生啊。對於陣列來說怎麼做呢?有乙個重要的思想,叫做擋板法,就是用擋板把陣列分成兩個區間 那麼排序分三步走 最初擋板是在陣列的最左邊,index 0 ...
Java排序演算法之 插入排序
package algorithm.sort 原理 插入排序使用的是增量方法,每次將乙個待排序的數,插入到已經排好序的陣列中,直到所有待排序的數都插入到有序陣列中為止 類似於摸牌後整理牌 author administrator public class insertsort a j 1 key 將...
Java排序演算法 插入排序
插入排序最簡單的排序方法之一。它是時間複雜度為o n 2 空間複雜度為o 1 的一種穩定排序演算法。基本思想 插入排序有n 1趟排序組成。假設在第p個位置的元素為待插入元素,對於p 1到p n 1趟,每一趟保證從位置到位置p的元素已經處於有序狀態。一開始預設a 0 為已排序陣列中的元素,從arr 1...