插入排序

插入排序可理解为推箱子问题,前面有4个箱子,且都从小到大排好序,现在第5个箱子来了

需要将第5个箱子推到指定位置。

思路:先把第五个箱子放到旁边,现在有5个位置,比较第4个和第5个,若第4个大,则将其

推到位置5,再比较第3个与第5个,若第3个大,则将其推到位置4,假设第2个箱子比第5个小

则将第5个箱子推到位置2,结束。

代码也很简单:

 

 1 void insertSort(vector<int> &a){
 2     int j,temp;
 3     for(int i=1;i<a.size();++i){   //从第二个元素开始
 4         temp=a[i];
 5         j=i;
 6         while(j>=1&&temp<a[j-1]){
 7             a[j]=a[j-1];
 8             --j;
 9         }
10         a[j]=temp;
11     }
12 }

 

时间复杂度:

  最差:O(n²)

  平均:O(n²)

空间复杂度:

  O(1)

posted @ 2015-06-10 13:51  影翕  阅读(139)  评论(0编辑  收藏  举报