每步將一個待排序的紀錄,按其數值的大小插入前面已經排序的文件中適當位置上,直到所有插入完爲止,其適用於少許數據的排序java
public void insertion_sort(int[] arr) { if (arr == null || arr.length < 2) { return; } int i,j,temp; for (i=1; i<arr.length; i++) { temp = arr[i]; for (j = i-1; j>=0 && arr[j]>temp; j--) { arr[j+1] = arr[j]; } arr[j+1] = temp; } }
插入排序是在有序的序列上,一次插入一個元素。固然,剛開始這個有序的小序列只有1個元素,就是第一個元素。比較是從有序序列的末尾開始,也就是想要插入的元素和已經有序的最大者開始比起,若是比它大則直接插入在其後面,不然一直往前找直到找到它該插入的位置。若是遇見一個和插入元素相等的,那麼插入元素把想插入的元素放在相等元素的後面。因此,相等元素的先後順序沒有改變,從原無序序列出去的順序就是排好序後的順序,因此插入排序是穩定的。算法