插入排序指的是,对于一个数组来说,当前n个数据是有序的,对于第n+1元素来说,要将插入到前n元素中,要通过元素比较,从后向前依次比较。
重复执行比较,直到最后一个元素。
实现如下:
public class Insertion {
public static void sort(Comparable[] a) {
int n = a.length;
for (int i = 1; i < n; i++) {
for (int j = i; j > 0; j--) {
if (less(a[j], a[j - 1])) {
exchange(a, j, j - 1);
}
}
}
}
private static boolean less(Comparable a, Comparable b) {
return a.compareTo(b) < 0;
}
public static void exchange(Comparable[] a, int i, int j) {
Comparable tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}