插入排序(Insertion Sort)
原理:就好比我们打扑克排的抓牌阶段,我们一般拿到一张新的排会与前面的牌进行比较,然后放到合适的位置,即每次抓到牌后默认前面的牌已经全部排好序。
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。
逻辑代码
public class InsertionSort {
public static void main(String[] args) {
int[] arrs = {
3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48};int len = arrs.length;for (int i = 1; i < len; i++) {
int current = arrs[i];int j = i - 1;while (j >= 0 && current < arrs[j]) {
arrs[j + 1] = arrs[j];j--;}arrs[j + 1] = current;Utils.printArr(arrs);}}
}
2.演示图:
演示图片为转载,转载地址:https://www.runoob.com/w3cnote_genre/algorithm
总结
时间复杂度(平均) | 时间复杂度(最好) | 时间复杂度(最坏) | 空间复杂度 | 稳定性 |
---|---|---|---|---|
O(n?) | O(n?) | O(n) | O(1) | 稳定 |