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

排序算法总结(三)插入排序

2013-09-13 16:10 274 查看
插入排序的原理是从数组的某个位置开始依次和前面的位置数相比,找到插入位置,将数插入到该位置,这样多次插入后,得到的将是一个有序数组。

参考代码:

#include <iostream>
using namespace std;

void InsertSort(int *arrays,int len);

int main(void)
{
int i;
int arrays[]={9,8,7,6,5,4,3,2,1};
InsertSort(arrays,9);
for (i=0;i<9;i++)
{
cout << arrays[i] <<" ";
}
cout <<endl;
return 0;
}

void InsertSort(int *arrays,int len)
{
int i,j,k;
int tmp;
for (i=1;i<len;i++)
{
j=i-1;
while (arrays[i]<arrays[j] && j>=0)
{
j--;
}
tmp=arrays[i];
for (k=i;k>j+1;k--)
{
arrays[k]=arrays[k-1];
}
arrays[j+1]=tmp;
}
}


插入排序是稳定的排序,需要一个辅助空间,最好的情况下数组是有序的只要扫描一次时间复杂度为O(n), 最坏的情况下数组是待排序的逆序,时间复杂度为O(n2) 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息