template<class T>
class Less
{
public:
bool operator()(const T& left, const T& right)
{
return left < right;
}
};
template<class T>
class Greater
{
public:
bool operator()(const T& left, const T& right)
{
return left > right;
}
};
template<class Iterator, class Compare>
void Bubble(Iterator first, Iterator last, Compare com)
{
bool IsChange = false;
while(first != last)
{
IsChange = false;
Iterator cur = first;
Iterator next = cur+1;
while(next != last)
{
if(com(*next, *cur))
{
swap(*cur, *next);
IsChange = true;
}
cur = next;
++next;
}
if(!IsChange)
return;
--last;
}
}
template<class T, class Iterator>
void Bubble(Iterator first, Iterator last)
{
Bubble(first, last, Less<T>());
}
int main()
{
int array[] = {4,3,6,8,1,9,2,0,5,7};
Bubble<int>(array, array+sizeof(array)/sizeof(array[0]));
Bubble(array, array+sizeof(array)/sizeof(array[0]), Less<int>());
Bubble(array, array+sizeof(array)/sizeof(array[0]), Greater<int>());
return 0;
}
模板实现通用的冒泡排序
最新推荐文章于 2023-08-13 19:49:36 发布