您的位置:首页 > 理论基础 > 数据结构算法

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

2014-05-23 16:49 253 查看
直接插入排序是最简单的排序算法

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

设 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)

直接插入排序适合数据元素较少的情况,数据元素较大则不宜用直接插入排序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: