插入排序

插入排序基本思想:

每一步将一个待排序的,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。

例子:

 

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 int a[120000],n;
 5 int main()
 6 {
 7     scanf("%d",&n);
 8     for(int i=1;i<=n;++i) scanf("%d",&a[i]);
 9     for(int i=1;i<=n;++i)
10     {
11        int j=i;
12        while(j>=1 && a[j]<a[j-1])
13        {
14             swap(a[j],a[j-1]);
15          j--;
16        }
17     }
18     for(int i=1;i<=n;++i) printf("%d ",a[i]);
19     return 0;
20 }
View Code

 

插入排序在最好情况下,需要比较n-1次,无需交换元素,时间复杂度为O(n);

在最坏情况下,时间复杂度依然为O(n2)

 

posted @ 2018-02-28 14:40  月亮茶  阅读(141)  评论(0编辑  收藏  举报