//简单的模板冒泡排序
#include<iostream>
using namespace std;
template<class T>
void BubbleSort(T* array, size_t size)
{
for (size_t i = 0; i < size - 1; i++)
{
for (size_t j = 0; j < size - i - 1; j++)
{
if (array[j]>array[j + 1])
{
swap(array[j], array[j + 1]);
}
}
}
}
int main()
{
int arr1[] = { 2, 4, 1, 5, 3, 6, 9, 0, 8, 7 };
BubbleSort(arr1, sizeof(arr1) / sizeof(arr1[0]));
return 0;
}
可以处理升序降序以及任意类型数组的排序
#include<iostream>
using namespace std;
template<class T>
struct Less
{
bool operator()(const T& left, const T& right)
{
return left < right;
}
};
template <class T>
struct Greater
{
bool operator()(const T& left, const T& right)
{
return left>right;
}
};
template<class T,class Compare=Greater<T>>
void BubbleSort(T* array, size_t size)
{
bool Ischange = false;
for (size_t i = 0; i < size - 1; i++)
{
for (size_t j = 0; j < size - i - 1; j++)
{
if (Compare()((array[j]), array[j + 1]))
//if (array[j]>array[j + 1])
{
Ischange = true;
swap(array[j], array[j + 1]);
}
}
if (!Ischange)
return;
}
}
int main()
{
int arr1[] = { 2, 4, 1, 5, 3, 6, 9, 0, 8, 7 };
BubbleSort<int>(arr1, sizeof(arr1) / sizeof(arr1[0]));
BubbleSort<int,Less<int>>(arr1, sizeof(arr1) / sizeof(arr1[0]));
return 0;
}