演算法學習筆記--插入排序
阿新 • • 發佈:2019-01-07
插入排序:將每一個元素插入到其他已經有序的陣列的適當位置。為了給插入的元素騰出空間,需要將其餘所有元素在插入之前都向右移動一位。
插入排序也很簡單,java程式碼如下:
/**
*插入排序
*/
public class Insertion {
public static void sort(int[] a){
int N = a.length;
for (int i = 1; i < N; i++) { //將a[i]插入到a[i-1],a[i-2],a[i-3]...之中
for (int j = i; j > 0 && (a[j] < a[j-1]); j--) {
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
}
插入排序軌跡圖:
插入排序的特點:
1、對於隨機排列的長度為N且主鍵不重複的陣列,平均情況下插入排序需要~(N^2)/4次比較以及~(N^2)/4次交換。最壞的情況下需要(N^2)/2次比較和(N^2)/2次交換,最好的情況下需要N-1次比較和0次交換。
2、插入排序對於部分有序的陣列十分高效,也適合小規模陣列。
以下幾種場景適合插入排序:
1、陣列中每個元素距離它的最終位置都不遠。
2、一個有序的大陣列接一個小陣列
3、陣列中只有幾個元素的位置不正確。