您的位置:首页 > 其它

排序算法系列之插入排序

2015-06-24 17:47 155 查看
思想:1. 从第一个元素开始,认为该元素已经是排好序的。

2. 取下一个元素,在已经排好序的元素序列中从后向前扫描。

3. 如果已经排好序的序列中元素大于新元素,则将该元素往右移动一个位置。

4. 重复步骤3,直到已排好序的元素小于或等于新元素。

5. 在当前位置插入新元素。

6. 重复步骤2。
程序:

template<classT>
void InsertSort(T *x,constintN)
{
for(inti = 1; i<N; i++)
{
Ttemp = x[i];
intj;
for(j= i-1; j>=0 && temp<x[j];j--)
{
x[j+1]= x[j];
}
x[j+1]= temp;
}
}


分析:

稳定性:插入排序在两数相等的情况下不交换位置,所以是稳定的。

时间复杂度:最差时间复杂度O(n²),最优时间复杂度O(n),平均时间复杂度O(n²)
辅助空间复杂度O(1) ,一个临时变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: