一、文字解释直接插入排序
将一个记录插入到已排序好的有序表中,从而得到一个新的记录数增加 1 的有序表。
首先将数组中的第一个元素看成是一个有序的子数组,然后从第 2 个元素开始逐个进行插入,直至整个数组有序为止。
二、直接插入排序动图
三、代码
public class DirectInsertSort {
public static void main(String[] args) {
int arr[] = {12, 62, 5, 6, 26, 7, 23, 62, 1};
for (int i = 1; i < arr.length; i++) {
int t = arr[i];
int j;
for (j = i - 1; j >= 0 && arr[j] > t; j--) {
arr[j + 1] = arr[j];
}
arr[j + 1] = t;
}
System.out.println(Arrays.toString(arr));
}
}
输出结果:
[1, 5, 6, 7, 12, 23, 26, 62, 62]
四、时间复杂度
最好情况时间复杂度为O(n)。
最坏情况时间复杂度为O(n^2)。
平均情况下时间复杂度为O(n^2)。