【排序算法03】--插入排序

package com.lll.algorithms.sort;

import java.util.Arrays;

/**
 * @ClassName : InsertSort
 * @Description: 插入排序
 * @Author: liulianglin
 * @Date: 2021/11/19 14:49
 * @Version : 1.0
 * 思想: 将一个序列抽象为一个有序序列和无序序列,
 *      首次循环将序列的第一个元素当作有序序列,其他元素当作无序序列。
 *      每次将无序序列的第一个元素作为待插入元素向有序序列中插入排序。
 */
public class InsertSort {
    public static void insertSort(int[] arr){
        for (int i = 1; i < arr.length; i++) {
            //定义一个待插入的数据
            int insertValue = arr[i];
            int insertIndex = i-1;
            //条件1:insertIndex>=0 保证insertIndex不越界(即不小于0)
            //条件2:insertValue < arr[insertIndex]满足的话说明insertValue还没有找到正确插入位置
            while(insertIndex>=0 && insertValue < arr[insertIndex]){
                // 将arr[insertIndex]元素后移
                arr[insertIndex+1] = arr[insertIndex];
                insertIndex--;
            }

            //当退出while循环时,表示本轮已经为insertValue找到正确的插入位置(注意:前面while循环中insertIndex进行了减减操作)
            arr[insertIndex+1] = insertValue;

        }

    }

    public static void main(String[] args) {
        int[] arr = {7,6,-1,9};
        insertSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值