目录
一、函数介绍
sort()函数包含在头文件#include<algorithm>,它可以实现对数据的排序,是一种类似于快排的排序函数,其效率高于常见的冒泡排序和选择排序。一般我们只需要知道该函数如何使用,关于它如何实现排序我们不做过多了解,如你想进一步学习,可以搜索相关资料。
二、函数用法
参数:3个或2个
sort(first,last,cmp);
- first:排序起始位置
- last:排序结束位置
- cmp:排序函数(可以是从大到小也可以是从小到大)
注意:参数cmp可以没有,即参数个数为2,此时函数默认的排序方法是从小到大排序
返回值:true/false(bool类型)
cmp(排序函数):
从小到大:
bool cmp(int a, int b)
{
return a < b;
}
(或者忽略第三个参数!)
示例:
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a, int b)
{
return a < b;
}
int main()
{
int a[4] = { 3,4,1,2 };
sort(a,a+4,cmp);
int i;
for (i = 0; i < 4; i++)
{
cout << a[i] << " ";
}
cout << endl;
return 0;
}
从大到小:
bool cmp(int a, int b)
{
return a > b;
}
示例:
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a, int b)
{
return a > b;
}
int main()
{
int a[4] = { 3,4,1,2 };
sort(a,a+4,cmp);
int i;
for (i = 0; i < 4; i++)
{
cout << a[i] << " ";
}
cout << endl;
return 0;
}
那么,有没有不写cmp函数也可以让它实现从大到小排序的方法呢?
答案是有,我们利用c++强大的库中的 less<数据类型>()和greater<数据类型>()实现。
less<数据类型>()实现从小到大排序:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[4] = { 3,4,1,2 };
sort(a,a+4,less<int>());
int i;
for (i = 0; i < 4; i++)
{
cout << a[i] << " ";
}
cout << endl;
return 0;
}
greater<数据类型>()实现从大到小排序:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[4] = { 3,4,1,2 };
sort(a,a+4,greater<int>());
int i;
for (i = 0; i < 4; i++)
{
cout << a[i] << " ";
}
cout << endl;
return 0;
}
sort()函数同样也可以对字符串进行排序:
#include <iostream>
#include <algorithm>
#include<string>
using namespace std;
int main()
{
string s;
cin >> s;
sort(s.begin(), s.end()); //从小到大
cout << s;
return 0;
}
#include <iostream>
#include <algorithm>
#include<string>
using namespace std;
int main()
{
string s;
cin >> s;
sort(s.begin(), s.end(),less<char>()); //从小到大
cout << s;
return 0;
}
#include <iostream>
#include <algorithm>
#include<string>
using namespace std;
int main()
{
string s;
cin >> s;
sort(s.begin(), s.end(),greater<char>()); //从大到小
cout << s;
return 0;
}