template<class T>
struct More
{
bool operator()(T a, T b)
{
return a > b;
}
};
template<class T>
struct Less
{
bool operator()(T a, T b)
{
return a < b;
}
};
template<class T>
struct MoreString
{
bool operator()(T a, T b)
{
if (strcmp(a, b) == 1)
return true;
else
return false;
}
};
template<class T>
struct LessString
{
bool operator()(T a, T b)
{
if (strcmp(a, b) == -1)
return true;
else
return false;
}
};
template<class T, class com>
void BubbleSort(T* a, size_t size)//,Compare=less()
{
for (int i = 0; i<size - 1; i++)
{
for (size_t j = 0; j < size - i - 1; j++)
{
if (com()(a[j], a[j + 1]))//升序
swap(a[j], a[j + 1]);
}
}
}
int main()
{
//int array[] = { 1, 4, 6, 4, 3 };
char* array[] = {"hjd","sha","ghs","zag"};
size_t size = sizeof(array) / sizeof(array[0]);
BubbleSort<char*, MoreString<char*>>(array, size);
for (size_t j = 0; j < size; j++)
{
cout << array[j]<<" ";
}
return 0;
}
实现各种类型的冒泡排序
最新推荐文章于 2022-07-18 21:11:17 发布