关于排序算法之插入排序

      插入排序的算法虽然简单,但是很多时候,笔试时,往往几个简单算法,很容易让人头疼。况且,如何又简单、又快速写出代码,这个才是关键。所以,这几天重温了这几个算

法,整理了一下,方面今后查阅。

      插叙算法的思路很简单,就是不断从无序区间中取出元素,插入到有序区间中去,并且不断调整有序区间。大概代码如下:

     

 1 void SelectSort::InsertSort()                //插入排序
 2 {
 3     int temp,j;
 4     for(int i=0;i < int(SelectArry.size()-1);i++)  //i代表有序区间数组第i个元素
 5      { 
 6          j = i+1;                                  //j代表无序区间数组第1个元素
 7          if( SelectArry[j] < SelectArry[i])        //无序区间数组第1个元素比较小,需要对有序区间调整
 8          {
 9              temp = SelectArry[j];                 //记录临时变量
10              while( i>=0 && temp <  SelectArry[i]) //寻找有序区间中的插入位置
11               {
12                 SelectArry[i+1] = SelectArry[i];
13                 i--;
14               }
15            SelectArry[i+1] = temp;                 //将无序区间的元素插入
16          }
17          i = j-1;                                  //还原i,继续进行循环
18     }
19          
20 }

      由于是用类来写的,SelectArry数组封装在类中,其中SelectAtty数组的定义是vector<int>;
      转载请注明出处:http://www.cnblogs.com/Su-30MKK/archive/2012/11/05/2756172.html

posted on 2012-11-05 23:32  Su-30MKK  阅读(234)  评论(0)    收藏  举报