//直接插入排序
private static void insertSort(int a[], int n) {
int j, k;
for (int i = 1; i < n; i++) {
for (j = i - 1; j >= 0; j--) {
if (a[j] < a[i]) {
break;
}
}
if (j != i - 1) {
int temp = a[i];
for (k = i - 1; k < j; k--) {
a[k + 1] = a[k];
}
a[k + 1] = temp;
}
}
}
基本思想是基于a[i]往前遍历,找出a[0]~a[i-1]中比a[i]小的数,将a[i]插入到那个数后面。
时间复杂度:最好情况是O(n),最坏情况是O(n^2),平均时间复杂度为O(n^2)
空间复杂度:O(1)
在大部分已排序好的情况下较简单,该算法比较稳定。