快速排序&泛型
【快速排序】
#include <iostream>
using namespace std;
void MySort(int a[], int b)
{
for (int i = 0; i < b; i++)
{
int _FLAG = i;
for (int j = i + 1; j < b; j++)
{
if (a[j] < a[_FLAG])
{
_FLAG = j;
}
}
if (_FLAG != i)
{
swap(a[i], a[_FLAG]);
}
}
}
添加模板 template
template<class T>
void MySort(int a[] , int b)
{
for (T i = 0; i < b; i++)
{
int _MAX_FLAG = i;
for (int j = i + 1; j < b; j++)
{
if (a[j] < a[_MAX_FLAG])
{
_MAX_FLAG = j;
}
}
if (_MAX_FLAG != i)
{
swap(a[i], a[_MAX_FLAG]);
}
}
}
对复合数据类型的排序
#include <iostream>
using namespace std;
struct Person
{
string name;
int age;
//重载小于号
bool operator<(Person& p)
{
return p.age != this->age ? p.age > this->age : p.name > this->name;
}
//重载左移运算符 需要使用friend
friend ostream& operator<<(ostream& const os,Person& const p)
{
os << p.name << " " << p.age << endl;
return os;
}
};