插入排序

插入排序法
插入排序法

将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

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;
        }
    }

}
posted @ 2021-02-27 01:00  澎拜编程  阅读(49)  评论(0)    收藏  举报