#ifndef _RECURSIONINSERT_H_ #define _RECURSIONINSERT_H_ template< class T > void recursioninsert( T * lpFinal, int index ) { T r = lpFinal[ index ]; int i = index - 1; while( ( i >= 0 ) && ( r < lpFinal[ i ] ) ) { lpFinal[ i + 1 ] = lpFinal[ i ]; --i; } lpFinal[ i + 1 ] = r; } #endif #ifndef _RECURSIONINSERTSORT_H_ #define _RECURSIONINSERTSORT_H_ #include"recursioninsert.h" template< class T > void recursioninsertsort( T * lpFinal, int index ) { if( index > 1 ) { recursioninsertsort( lpFinal, index - 1 ); } recursioninsert( lpFinal, index ); } #endif #include<iostream> using namespace std; #include<conio.h> #include"mergesort.h" #include"recursioninsertsort.h" int main() { int a[ 8 ] ={ 2, 89, 56, 45, 77, 4, 6, 5 }; for( int i = 0; i < 8; ++i ) { cout<<a[ i ]<<" "; } cout<<endl; recursioninsertsort( a, 7 ); for( int i = 0; i < 8; ++i ) { cout<<a[ i ]<<" "; } getch(); return 0; }