插入排序
- 首先,检查数组是否为空或长度是否小于 2。如果是,直接返回,因为这种情况下不需要排序。
- 外层循环从索引值为
1的元素开始,逐个将元素插入已排序的部分。 - 内层循环用于比较和交换元素。从当前外层循环的索引值
i的前一个索引值j开始,同时j大于0(确保不会越界),并且当前元素arr[j]大于它后面的元素arr[j+1],就交换两个元素的位置。
插入排序的一个典型实现,其平均和最坏情况时间复杂度都是 ,其中 是数组的长度。这种排序算法适用于小规模的数据集
/**
* 插入排序
*/
public class InsertSort {
public static void main(String[] args) {
int[] arr = new int[]{3, 5, 22, 111, 5};
sort(arr);
}
public static void sort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
for (int i = 1; i < arr.length; i++) {
for (int j = i - 1; j > 0 && arr[j] > arr[j + 1]; j--) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}