插入排序可以想象成你手里有一把牌(已经有序),当你新摸一张牌的时候,这张新牌放在什么位置才能保证手上的牌仍然有序。
所以,插入排序的逻辑就是,首先实现0-1位置有序,然后0-2,0-3,都有序,即最终实现0-N位置上的数有序。
public static void insertSort3(int[] arr) {
for (int i = 1; i < arr.length; i++) {
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
//数组两个指定位置的数交换,很简单
ArrayUtil.swap(arr, j + 1, j);
}
}
}
时间复杂度:O(N^2)
空间复杂度:O(1)
稳定性:稳定