数据结构排序——插入排序

插入排序

假设现在有一组数据:Integer[] a ={6,5,8,9,4,2,2,0,2,1};我们想用插入排序对其进行升序排序。
插入排序的思想:
从第二个数据开始,向前比较,如果小于就交换,如果大于就终止(因为前面的数据已经有序了)。
第三个数据大于第二个数据所以不用交换。
第四个数据大于第三个数据不用交换。
第五个数据小于第四个数据所以要交换,此时索引变为第四个数据。小于第三个数据所以要交换,索引变为第三个数据,小于第二个数据所以要交换,索引为第二个数据。小于第一个数据,所以要交换。
。。。
直至整个数组有序。
以下是实现过程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此数组已有序
我们可以用Java代码来实现此排序,如下所示:

 public static void sort(Comparable[] a) {
        for (int i = 1; i < a.length; i++) {

            for (int j = i; j > 0; j--) {
                if (Compare(a[j - 1], a[j])) {
                    exchange(a, j - 1, j);
                } else {
                    break;
                }
            }
        }
    }

    private static boolean Compare(Comparable i, Comparable j) {
        return i.compareTo(j) > 0;
    }

    private static void exchange(Comparable[] a, int i, int j) {
        Comparable temp;
        temp = a[i];
        a[i] = a[j];
        a[j] = temp;

    }

执行结果:

[0, 1, 2, 2, 2, 4, 5, 6, 8, 9]

Process finished with exit code 0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值