初等排序之插入排序

来源:互联网 发布:侯振挺落选院士 知乎 编辑:程序博客网 时间:2024/06/05 03:45

介绍

插入排序是一种十分容易想到的排序算法,在一个数列中,我们需要将数一个一个取出,再按顺序依次放在相应的位置上。例如数列{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

原创粉丝点击