package sort.insert;
public class Insertion {
public static void sort(Comparable[] a) {
for (int i = 1; i < a.length; i++) {
for (int j = i; j > 0; j--) {
//如果j-1处的值比j处的值大,就交换,否则跳出循环
if (greater(a[j-1], a[j])) {
exch(a, j-1, j);
} else {
break;
}
}
}
}
//比较元素v和w的大小
private static boolean greater(Comparable v, Comparable w) {
return v.compareTo(w) > 0;
}
//调换v和w的索引
private static void exch(Comparable[] a, int i, int j) {
Comparable temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
插入排序使用双层for循环,其中内层循环的代码是真正完成排序的代码。
插入排序的时间复杂度是O(N^2)
本文介绍了一种简单的排序算法——插入排序,并详细解释了其工作原理及Java实现方式。通过双层循环,将未排序部分的每个元素按顺序插入到已排序的部分中,最终完成整个数组的排序。
1219

被折叠的 条评论
为什么被折叠?



