思路
代码
public static void main(String[] args) {
Integer[] arr = new Integer[]{1,1,3,5,2,1,2,4,-1,1,7};
insertSort(arr);
System.out.println(new ArrayList<>(Arrays.asList(arr)));
}
// 插入排序
public static void insertSort(Integer[] arr) {
for (int i = 1; i < arr.length; i++) {
if (arr[i] >= arr[i-1]) {
continue;
}
int temp = arr[i];
for (int j = i-1; j >= 0; j--) {
if (arr[j] > temp) {
arr[j+1] = arr[j];
arr[j] = temp;
} else {
break;
}
}
}
}
总结
插入排序在序列原本顺序比较好时,相对来说会比较快,但最极端情况,其要交换的次数和冒泡排序一样,整体来说,性能不稳定。