插入排序原理:
- 把所有元素分为两组,已经排序好的和未排序的。
- 找到未排序的组中的第一个元素,向已经排序好的组中进行插入。
- 倒序遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,就把待插入元素放到这个位置,其他的元素向后移一位。
插入排序算法实现:(稳定排序)
public static void main(String[] args) {
int[] arr = {8, 4, 5, 7, 1, 3, 6, 2};
sort(arr);
for (int i : arr) {
System.out.print(i+"\t");
}
}
public static void sort(int[] a) {
for (int i = 1; i < a.length; i++) {
for(int j = i; j > 0; j--) {
if(greater(a[j-1], a[j])) {
exc(a, j-1, j);
} else {
break;
}
}
}
}
public static boolean greater(int v, int w) {
return v > w;
}
public static void exc(int[] a, int i, int j) {
int temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
程序执行结果: