插入排序比較適用于 有序的輸入
插入排序是和整理紙牌的時候是一樣的
當摸一張牌的時候,把當前這張牌插入到指定位置
可以拿這張牌的值和前面的比較,如果比前面的牌小則和前面的牌交換
此時j-1 讲逛,當前牌索引也因交換-1
當出現(xiàn)當前牌大于前面的牌(因為前面的牌從小到大排序,出現(xiàn)大于則已經(jīng)到正確的位置了)則跳出
@Test
public void test(){
int[] a = {4, 2, 5, 3, 1, 0};
sort(a);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + ",");
}
}
public void sort(int[] a){
for (int i = 1; i < a.length; i++) {
for (int j = i; j > 0 && less(a[j], a[j - 1]); j--) {
exch(a, j, j-1);
}
}
}
private boolean less(int i, int j) {
return i > j ? false : true;
}
private void exch(int[] a, int m, int n) {
int tmp = a[m];
a[m] = a[n];
a[n] = tmp;
}