C++ sort 函数

在刷题看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;
}

运行结果




猜你喜欢

转载自blog.csdn.net/skuart/article/details/71698458