数据结构---直接插入排序

直接插入排序是最简单的排序算法

算法思想:将第一个数据元素看成是一个有序的子序列,再依次从第二个数据元素起逐个插入到这个有序的子序列中。

设 i 为第 i 个插入到序列中的元素,那么 elem[i] 插入到elem[0]~~elem[i-1] 构成的有序子序列中。

在进行插入时注意要从后向前逐一比较,并且在比较时一定要注意边界问题 i 与 j ,由于第一个元素直接有序,因此排序直接从第二个元素开始,这就是i从1 开始的原因。

而 j 则是从当前待插入元素的前一个开始即 i-1。

代码如下:

bool InsertSort(int *arr,int len)
{

 for(int i=1; i<len; ++i)

{

int temp=arr[i];                                 

for(int j=i-1; j>=0; --j)

{

if(temp<arr[j])

 {

arr[j+1] = arr[j];

}

else

break;

}

arr[j+1] = temp;

}

return true;

}

直接插入排序时间复杂度:O(n^2), 空间复杂度为O(1)

当序列越接近有序时间复杂度越小,最好的时间复杂度为O(n)

直接插入排序适合数据元素较少的情况,数据元素较大则不宜用直接插入排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值