排序演算法02: 插入排序
阿新 • • 發佈:2019-01-01
插入排序是這樣一種排序:
為了給要插入的元素騰出空間,我們需要將其餘所有元素在插入之前都向右移動一位。
與選擇排序一樣,當前索引左邊的元素是有序的,但它們的最終位置還不確定。
插入排序所需的時間取決於輸入中元素的初始順序,在實際應用中對某些型別的非隨機陣列很有效。
插入排序的比較次數範圍為 N-1 ~ N^2/2
插入排序的交換次數為範圍為 0 ~ N^2/2
對於隨機順序無重複主鍵的陣列,插入排序比選擇排序大概快一倍。
Insertion.java
public class Insertion extends BaseSort { public static void sort(Comparable[] aa){ for(int i=1; i<aa.length; i++){ for(int j=i; j>0 && less(aa[j], aa[j-1]); j--){ exch(aa, j,(j-1)); } } } public static void main(String[] args) { Comparable[] aa = getDoubleArray(5); sort(aa); show(aa); } }