Enlace de blog especial
Blog de ejercicios después de la clase de C ++ POJ de la Universidad de Pekín Registro completo de soluciones
Titulo original
#include <iostream>
using namespace std;
bool Greater2(int n1,int n2)
{
return n1 > n2;
}
bool Greater1(int n1,int n2)
{
return n1 < n2;
}
bool Greater3(double d1,double d2)
{
return d1 < d2;
}
template <class T1,class T2>
void mysort(
#define NUM 5
int main()
{
int an[NUM] = {
8,123,11,10,4 };
mysort(an,an+NUM,Greater1);
for( int i = 0;i < NUM; i ++ )
cout << an[i] << ",";
mysort(an,an+NUM,Greater2);
cout << endl;
for( int i = 0;i < NUM; i ++ )
cout << an[i] << ",";
cout << endl;
double d[6] = {
1.4,1.8,3.2,1.2,3.1,2.1};
mysort(d+1,d+5,Greater3);
for( int i = 0;i < 6; i ++ )
cout << d[i] << ",";
return 0;
}
Código
T1* startptr,T1* endptr,T2* judge)
{
T1 temp;
for(T1* i=startptr;i<=endptr-2;i++)
{
for(T1* j=i+1;j<=endptr-1;j++)
{
if(!(*judge)(*i,*j))
{
temp = *i;
*i = *j;
*j = temp;
}
}
}
}