插入排序的C++实现

  1 /**********************************************************************
  2  *
  3  *    文 件 名:InsertSort.cpp
  4  *
  5  *    文件描述:演示插入排序算法
  6  *
  7  *    创 建 人:crazyhf 2012年05月12日
  8  *
  9  *    版    本:1.0
 10  *
 11  *    修改记录:
 12  *
 13  **********************************************************************/
 14 
 15 # include <iostream>
 16 
 17 # include <vector>
 18 
 19 using std::cin ;
 20 using std::cout ;
 21 using std::endl ;
 22 using std::vector ;
 23 
 24 
 25 /*=====================================================================
 26  *
 27  * 函 数 名:InsertSort
 28  *
 29  * 参    数:
 30  *           vector < Comparable > &vecary :要进行排序的数据序列
 31  *           Compare lessThan              :排序所使用的数值比较器
 32  *
 33  * 功能描述:演示插入排序算法
 34  *
 35  * 返 回 值:无返回值
 36  *
 37  * 抛出异常:
 38  *
 39  * 作    者:crazyhf 2012年05月12日
 40  *
 41  ======================================================================*/
 42 
 43 template < class Comparable , class Compare >
 44 void InsertSort( vector < Comparable > &vecary, Compare lessThan )
 45 {
 46     int num = vecary.size() ;
 47 
 48     for( int i = 1 ; i < num ; i++ )
 49     {
 50         Comparable tmp = vecary[i] ;
 51 
 52         for( int j = i ; j && lessThan( tmp , vecary[j - 1] ) ; j-- )
 53         {
 54             vecary[j] = vecary[j - 1] ;
 55         }
 56         
 57         vecary[j] = tmp ;
 58     }
 59 }
 60 
 61 /*=====================================================================
 62  *
 63  * 类    名:less
 64  *
 65  *
 66  * 功能描述:一个实现数值比较功能的函数对象
 67  *
 68  *
 69  * 成员函数:
 70  *
 71  *          成员函数:bool operator( const Compare &a , const Compare &b )
 72  *
 73  *          功能描述:比较对象a和对象b的关系
 74  *
 75  *          返 回 值:a < b则返回true,否则返回false
 76  *
 77  *
 78  * 抛出异常:
 79  *
 80  * 作    者:crazyhf 2012年05月12日
 81  *
 82  ======================================================================*/
 83 
 84 template < class Compare >
 85 class less {
 86 
 87 public:
 88     bool operator( )( const Compare &a , const Compare &b ) const
 89     { return a < b ; }
 90 } ;
 91 
 92 
 93 int main( int argc, char **argv )
 94 {
 95     vector < int > vec ;
 96     int n ;
 97     cout << "输入数据序列的个数:" ;
 98 
 99     if ( cin >> n )
100     {
101         int data ;
102 
103         while( n-- )
104         {
105             if( cin >> data ) vec.push_back( data ) ;
106         }
107 
108         InsertSort( vec , less < int >( ) ) ;
109 
110         n = vec.size( );
111         while( n-- ) cout << vec[n] << endl ;
112     }
113 
114     return 0 ;
115 }
posted @ 2012-05-12 23:46  crazylhf  阅读(189)  评论(0编辑  收藏  举报