介绍
插入排序是一种十分容易想到的排序算法,在一个数列中,我们需要将数一个一个取出,再按顺序依次放在相应的位置上。例如数列{8,4,5,9,6},若按升序排列,首先要将4提前队首,再将8往后移一位,随后将5提前到4后面,将8再往后移一位,最后将6提前到5后面,将8,9分别往后移一位,排序也就完成了。整个直接插入排序共用了O(n^2).
实现
语言:C++
#include<iostream>
using namespace std;
int i,j,n,a[100005];
int main()
{
scanf("%d",&n);
scanf("%d",&a[0]);//数组a[0]不需要排序,单独输入
for(i=1;i<n;i++)
{
scanf("%d",&a[i]);//节约时间,边读数据边排序
int k=a[i];
j=i-1;
while(j>=0&&a[j]>k)//移位,终止条件为移到行首或到比这个数小的数的后面
{
a[j+1]=a[j];
j--;
}
a[j+1]=k;
}
for(i=0;i<n-1;i++)printf("%d ",a[i]);
printf("%d\n",a[n-1]);
}
小结
这是排序算法中相对较简单的一个,但是也是最费时间的一种排序算法,当然为了节省节省时间我们更需要更多高效简洁的算法,coming soon!
writing by Panda_Hu 2017.5.21