JAVASE学习笔记 Java中数组排序算法-直接插入排序

1.直接插入排序的引入

在理解直接插入排序,可以从生活中的一些实例出发。在扑克牌的规则中有一种出牌的方式是顺子,也就是打出一组连续数字的牌,所以我们经常需要对手中的牌进行排序操作。人们经常对手中的牌如何排序?
举个例子:比如我手里面有红桃6,7,9,10这四张牌,已经处于升序状态。
在这里插入图片描述

这个时候我又拿到一张红桃8,如何将手中的五张牌重新处于升序状态?用冒泡排序,还是选择排序?
在这里插入图片描述
就像玩牌一样,排序算法也是利用类似的思想:维护一个有效区,把元素一个一个插入到有序区的适当位置,直到所有元素有序为止。


2.插入排序的算法步骤

假设给定一个无序数组,给定的无序数组如下

在这里插入图片描述
把数组的首元素5作为有序区,此时有序区只有这一个元素:

在这里插入图片描述
第一轮

让元素8与有序区的所有元素依次进行比较。
元素8>5,所以元素8与元素5无需进行重新排序。
此时有序区的元素增加到了两个。

在这里插入图片描述
第二轮

让元素6与有效区的所有元素依次进行比较。
元素6<8,将元素6与元素8进行交换。

在这里插入图片描述元素6>5,元素6与元素5无需交换顺序。
此时有序区的元素增加到了三个。

在这里插入图片描述

第三轮
让元素3与有序区的所有元素依次进行比较。
元素3<8,将元素8与元素3交换顺序。

在这里插入图片描述
元素3<6,将元素6与元素3交换顺序。

在这里插入图片描述
元素3<5,将元素5与元素3交换顺序。

在这里插入图片描述
此时有序区的元素增到到四个:

在这里插入图片描述

依次进行了类推,插入排序一共进行(数组长度-1)轮,每一轮的插入排序的结果为:

在这里插入图片描述


3.插入排序的代码实现

import java.util.Arrays;
public class InsertSort {
    public static void main(String[] args) {
        int [] arr={5,8,6,3,9,2,1,7};
        //插入排序
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = i+1; j < arr.length; j++) {
                if(arr[j]<arr[i]){
                    int temp=arr[i];
                    arr[i]=arr[j];
                    arr[j]=temp;
                    j--;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

输出的结果为:

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值