插入排序

前言:

​ 我们在玩打牌的时候,你是怎么整理那些牌的呢?一种简单的方法就是一张一张的来,将每一张牌插入到其他已经有序的牌中的适当位置。当我们给无序数组做排序的时候,为了要插入元素,我们需要腾出空间,将其余所有元素在插入之前都向右移动一位,这种算法我们称之为插入排序

过程描述:


1、从数组第2个元素开始抽取元素。

2、把它与左边第一个元素比较,如果左边第一个元素比它大,则继续与左边第二个元素比较下去,直到遇到不比它大的元素,然后插到这个元素的右边。

3、继续选取第3,4,…n个元素,重复步骤 2 ,选择适当的位置插入。

动图:

实现代码:

package fg;

import java.util.Arrays;

public class InsertSort{

    public static void insertSort (int[] arr) {
        int j = 0;
        int temp = 0;                             //临时变量,用于交换
        for (int i = 1; i < arr.length; i++) {    //从第二数开始比较
            temp = arr[i];                        //将当前数插入到已经有序的数组中
            for (j = i - 1; j >= 0; j--) {
                if (arr[j] > temp) {              //如果前面的数大于当前数,将他后移
                    arr[j + 1] = arr[j];
                } else {                          //因为小于就不用管了嘛
                    break;
                }
            }
            arr[j + 1] = temp;                     //将当前轮数的数放到应该在的位置
        }


        System.out.println(Arrays.toString(arr));   //将其转换成数组
    }

    //测试代码
    public static void main (String[] args) {
        int[] arr = {9, 322, 22, 72, 33, 99};
        insertSort(arr);
    }
}

测试结果:

[9, 22, 33, 72, 99, 322]

总结:

​ 实现起来确实非常的简单,为了防止以后忘记,记录一下!

欢迎大家关注公众号:小黄爱编程
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值