java实现直接插入排序

本文详细介绍了Java中直接插入排序的原理和实现过程。直接插入排序的基本思想是在已排好序的子序列基础上,逐步将下一个待排序的记录有序地插入。在排序过程中,通过与已排序的记录进行比较,找到合适的位置将其插入。文章还给出了具体的操作示例和算法的时间复杂度分析。
摘要由CSDN通过智能技术生成

java实现直接插入排序

一、排序思想

我们假定排序是有小到大排列。直接插入排序的基本思想是:在一个已排好的记录子集的基础上,每一步将下一个待排序的记录有序的插入到已排好的记录子集当中,直接将所有待排记录全部插入位置

例如:

已知待排序的一组记录的初始排列为:{ 49,38,65,49,76,13,27,52}

假设在排序过程中,前三个记录按关键字递增的次序重新排列,构成了一个含有三个记录的有序序列:

{38,49,65}

现在要将第四个记录49插入到上述序列,得到的有序序列:

{38,49,49,49,65}

一般情况下,第i趟直接插入排序的操作为:在含有i-1个记录的有序子序列r[1…i-1]中插入一个记录r[i]后,变成含有i个记录的有序子序列r[1…i]。为了在查找插入位置的过程中避免下标出界,将r[i]记入到r[0]中,将第i个记录的关键字k(i-1),k(i-2),…k(1)进行比较,将所有关键字大于k(i)的记录以此向后移动一个位置,直到遇见一个关键字小于或者等于k(i)的记录k(j),此时k(j)后面必为空位置,将第i个记录插入到空位置即可。

完整的直接插入排序是从i=2开始的,也就是说,将第1个记录视为已排好序的单元素子集合,然后将第2个记录插入到单元素子集合中。i从2循环到n,即可实现完整的直接插入排序。

例如对一组关键字序列{ 49,38,65,49,76,13,27,52}进行插入排序的过程中,每一趟排序之后的状态如下

初始关键字:{ 49,38,65,49,76,13,27,52}

​ i=2 {(49),38,65,49,76,13,27,52}

​ i=3 {(38,49),65,49,76,13,27,52}

​ i=4 {(38,49,65),49,76,13,27,52}

​ i=5 {(38,49,49,65),76,13,27,52}

​ i=6 {(13,38,49,49,65, 76)27,52}

​ i=7 {(13,27,38,49,49,65,76),52}

​ i=8 {(13,27,38,49,49,52,65,79)}

二、算法实现:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值