sort()
使用前,要#incldue <algorithm>
sort()
函数是 C++ 的内容,使用时需要包含 algorithm
库,并且要使用 std
命名空间。同样实现对一维数组排序。
1)自己写原则函数,告诉sort()如何排序
关于参数compare,compare带两个同类型的参数,如果第一个参数排在第二个参数前面,返回true,否则返回false
1)自己编写compare函数:
bool compare(int a,int b)
{
return a<b; //升序排列,如果改为return a>b,则为降序
}
当第三个参数compare返回true时,a所会在b前面,当返回false时,a在b的后面。
#include <iostream>
#include <algorithm>
using namespace std;
bool compare(int a, int b)
{
return a > b; //写成a>b则是降序,写成a<b则是升序。相当于告诉sort()函数它该如何排序
}
int main()
{
int a[8] = { 4,2,7,5,8,6,1,3 };
//sort()函数,第一个参数为起始地址,第二个参数为结束地址(结束地址不能是数组最后一个元素,因此为a+8
sort(a,a+8,compare); //第3个参数为原则函数,相当于告诉sort()函数它该如何排序,不写第3个参数默认升序。
for (int i = 0; i < sizeof(a) / sizeof(int); i++)
{
cout << a[i] << endl;
}
return 0;
}
2)使用c++库函数作为第3参数,让sort()排序
less<数据类型>() //从小到大排序
greater<数据类型>() //从大到小排序
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[8] = { 4,2,7,5,8,6,1,3 };
//sort()函数,第一个参数为起始地址,第二个参数为结束地址(结束地址不能是数组最后一个元素,因此为a+8
sort(a,a+8,greater<int>()); //greater<数据类型>() 从大到小排序
for (int i = 0; i < sizeof(a) / sizeof(int); i++)
{
cout << a[i] << endl;
}
cout << endl << endl;
sort(a, a + 8, less<int>()); //less<数据类型>() 从小到大排序
for (int i = 0; i < sizeof(a) / sizeof(int); i++)
{
cout << a[i] << endl;
}
return 0;
}