C++ sort 函数

来源:互联网 发布:uzi网络爆炸喷人视频 编辑:程序博客网 时间:2024/06/06 18:04

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

运行结果




1 0
原创粉丝点击