插入排序实例及Java实现

本文详细介绍了插入排序算法的基本原理及其实现方法,并通过一个具体的排序实例展示了排序过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

插入排序时较简单的一种排序方法,可以分为直接插入排序以及在直接插入排序基础上衍生出的其他插入排序方法。

插入排序的基本思想是:在要排序的一组数中,假设前面的n-1[n>=2]个数已经是排好顺序的,现在要将第n个数字插入到前面有序的数字中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。

这种排序方法的算法复杂度为O(n),其Java实现如下:

// insert_sort

    publicint[] insert_sort(int[] arr) {

       int[] intArr = arr;

       int i, j, key;

       for (j = 1; j < intArr.length; j++) {

           key = intArr[j];

           i = j - 1;

           while (i >= 0 && intArr[i] > key) {

              intArr[j] = intArr[i];

              i--;             

           }

           intArr[i + 1] = key;

       }

       return intArr;

    }

实例:

采用插入排序对序列1,3,2,5排序,排序过程如下所示:

(1)      j=1,key=3,i=0------- 1 3 2 5

(2)      j=2,key=2,i=1--------1 2 3 5

(3)      j=3,key==,i=2--------1 2 3 5

上例结果中省略了i自减的步骤,实际步骤是当j每增加1,就将intArr[j]与它前面的所有元素比较,当intArr[j]前面的元素大于intArr[j]时,就将其与它前面的一个元素交换,直至排序完成。


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值