插入排序

将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
package com.example.leetcode.easy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
/**
* 插入排序
* @author LiPeng01
* @since 2021/2/26 7:20 下午
*/
public class Insert {
public static void main(String[] args) {
int[] num = {3,2,1,523,1234,67771,64,0,-1,4323,2};
insertSort(num);
Logger logger = LoggerFactory.getLogger(Bubble.class);
logger.info(Arrays.toString(num));
}
public static void insertSort(int[] nums) {
//从第1个开始进行排序,前1个可以当做已经排好序的序号
for (int i = 1; i < nums.length; i++) {
// 记录要插入的数据
int tmp = nums[i];
int j = i;
//从已经排好序的序列最右边开始,知道 查找到比 要插入数据小的元素
while(j > 0 && tmp < nums[j-1]) {
//待插入元素比当前元素小则 将元素向后移动,因为前面已经记录了要插入的数据,所以即使覆盖也没有关系
nums[j] = nums[j-1];
j--;
}
//交换
nums[j] = tmp;
}
}
}

浙公网安备 33010602011771号