经常在做一些算法题的时候,我们都会使用到排序算法,而对于排序除了简单的冒泡排序以外,其余几乎也只能看到模板理解学习,有时候写出来要么超时、要么就是答案有错,因此这里简单学习一下C++的soort函数,熟悉它的基本用法。
sort函数使用要点:
1.sort函数默认是升序,而需要降序或者其他排序要求则需要自己编写comp函数
2.需要引入标准库#include<algorithm>
才可以使用sort函数
3.它有三个参数,第三个参数根据需要填写。
(1)第一个参数是要排序数组的初始地址;
(2)第二个参数是要排序数组的结束地址;
(3)第三个参数是要排序的方法(升序/降序)。
4.若需用使用less/greater函数则需要引入#include<functional>
代码演示如下:
#include<algorithm>
#include<iostream>
#include<string.h>
#include<functional>
using namespace std;
int comp(int a, int b) { return a > b; } //此处是降序
int main() {
int ary[10] = { 5,8,9,21,13,42,10,66,25 };
cout << "初始序列如下:\n";
for (int i = 0;i < 10;i++)
cout << ary[i] << " ";
sort(ary, ary + 10); //sort函数默认排序为升序
cout << "\n\n升序结果如下:\n";
for (int i = 0;i < 10;i++)
cout << ary[i] << " ";
/*
如果需要降序,则要自己重写一个comp函数
*/
sort(ary, ary + 10,comp); //sort函数默认排序为升序
cout << "\n\n降序结果如下:\n";
for (int i = 0;i < 10;i++)
cout << ary[i] << " ";
/*
而如果不想要自己编写,也可以使用标准库自带的比较函数
这是需要引入#include<functional>
升序:sort(begin,end,less<data-type>());
降序:sort(begin,end,greater<data-type>());
*/
sort(ary, ary + 10, less<int>());
cout << "\n\n使用标准库自带的比较函数(less<data-type>())升序结果如下:\n";
for (int i = 0;i < 10;i++)
cout << ary[i] << " ";
sort(ary, ary + 10, greater<int>());
cout << "\n\n使用标准库自带的比较函数(greater<data-type>())降序结果如下:\n";
for (int i = 0;i < 10;i++)
cout << ary[i] << " ";
return 0;
}
代码结果如下:
初始序列如下:
5 8 9 21 13 42 10 66 25 0
升序结果如下:
0 5 8 9 10 13 21 25 42 66
降序结果如下:
66 42 25 21 13 10 9 8 5 0
使用标准库自带的比较函数(less())升序结果如下:
0 5 8 9 10 13 21 25 42 66
使用标准库自带的比较函数(greater())降序结果如下:
66 42 25 21 13 10 9 8 5 0