template<class T>
class Test
{
public:
static void Sort(T *array,int len,bool (*Compare)(T& a,T& b))//static 可以直接通过Test<T>::Sort访问
{
T temp;
ASSERT(len>=1);
for (int i = 0;i < len-1;i++)//冒泡排序
{
for (int j = len-1;j>i;j--)
{
if (Compare(array[j],array[j-1]))//使用函数指针的方式进行比较
{
temp = array[j-1];//根据升序或降序进行交换
array[j-1] = array[j];
array[j] = temp;
}
}
}
}
};
template<class T>
bool ascend(T& a,T& b)
{
return a < b?true:false;
}
template<class T>
bool descend(T& a,T& b)
{
return a>b?true:false;
}