在刷题看C++源代码时,发现sort()这个函数,作为一个C++萌新,就去查看了这个函数的相关用法。
Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高!
sort函数包含在头文件为#include<algorithm>的c++标准库中。
一,最基本的使用,sort(a+i,a+n
),在这里a是一个数组,可以是int类型,也可为字符类型,sort会自动将这个数组中从下标为i到下标为n的数据进行增序排序。例如:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[10]={9,6,3,8,5,2,7,4,1,0};
for(int i = 0;i < 10;i++)
cout<<a[i]<< " " ;
cout << endl;
sort(a,a + 10);
for(int i = 0;i < 10;i++)
cout<< a[i] <<" ";
return 0;
}
把0~10打乱写入数组a中,再用sort函数,运行结果为:
但是这样只能做到从大到小排序,要做到从小到大排序还需要进行加工。
有两种方法,一种为加一个比较函数 complare(),个人觉得另一种更为便捷,在此就不再讲述这一种方法,有兴趣者可以自己百度,google。
现在讲第二种,Sortt函数的第三个参数可以用这样的语句告诉程序你所采用的排序原则
less<数据类型>()//从小到大排序,greater<数据类型>()//从大到小排序。同样通过把0~10进行排序。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[10]={9,6,3,8,5,2,7,4,1,0};
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<< endl;
sort(a,a+10,greater<int>());
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
sort(a,a+10,greater<int>());就是对a数组0~10
数据进行由大到小排序。
对字符串数组也是一样,下面看一个例子就能明白
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
char a[11]="abcdefg";
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<< endl;
sort(a,a+10,greater<char>());
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
运行结果