#include<iostream>
using namespace std;
///使用模板类及仿函数来实现冒泡排序///
template<typename T>
class Great
{
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, typename Compare>
class Sort//定义一个排序的类
{
public:
static void BubbleSort(T* arr, int size)
{
bool flag = false;//设置标志位
for(int i = 0;i < size - 1; i++)
{
flag = false;
for(int j = 0;j < size-i-1; ++j)
{
if(Compare()(arr[j], arr[j+1]))
{
std::swap(arr[j],arr[j+1]);
flag = true;
}
}
if(!flag)
break;//如果都没有发生交换就跳出
}
}
static void Print(T* arr, size_t size)
{
for(int idx = 0; idx < size; idx++)
{
cout<<arr[idx]<<" ";
}
cout<<endl;
}
};
int main()
{
int arr[] = {2,4,1,3,66,33,5,8,22,7};
Sort<int,Less<int>>::BubbleSort(arr,10);
Sort<int,Less<int>>::Print(arr,10);
system("pause");
return 0;
}
高级冒泡排序-->用模板仿函数再次实现
最新推荐文章于 2023-08-13 19:49:36 发布