本程序利用模板和仿函数实现一个通用的冒泡排序,即可以灵活的实现从大到小的排序和从小到大的排序。话不多说,直接上代码:
#include<iostream>
using namespace std;
//从小到大
template<typename T>
class More
{
public:
bool operator()(T left, T right)
{
return left>right;
}
};
//从大到小
template<typename T>
class Less
{
public:
bool operator()(T left, T right)
{
return left<right;
}
};
template<typename T,class com>
void Bubble(T a[],size_t size)
{
for(size_t i = 0; i<size-1; i++)
{
for(size_t j = 0; j<size-i-1; j++)
{
if(com()(a[j],a[j+1]))
{
std::swap(a[j],a[j+1]);
}
}
}
}
void Test()
{
int a[5] = {1,3,2,0,5};
Bubble<int,More<int>>(a,sizeof(a)/sizeof(a[0]));
}
int main()
{
Test();
return 0;
}