sort函数对数组和字符串的排序

(一)为什么要用c++标准库里的排序函数
Sort()函数是c++一种排序方法之一,它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高!
(二)c++标准库里的排序函数的使用方法
(1)sort函数包含在头文件为 #include”algorithm” 的c++标准库中,调用标准库里的排序方法可以不必知道其内部是如何实现的,只要出现我们想要的结果即可!
(2)Sort函数有三个参数:
1.第一个是要排序的数组的起始地址。
2.第二个是结束的地址(最后一位要排序的地址)。
3.第三个参数是排序的方法,可以是从小到大也可是从大到小,还可以不写第三个参数,此时默认的排序方法是从小到大排序。
sort函数使用模板:
sort(start,end,排序方法)
下面就具体使用sort函数结合对数组里的十个数进行排序做一个说明!
例一:sort函数没有第三个参数,实现的是从小到大

#include 
#include 
using namespace std;
int main()
{
    int arr[10] = { 8,5,7,3,9,2,1,0,6,4 };
    cout << "排序前顺序: ";
    for (int i = 0;i < 10;i++)
    {
        cout << arr[i] << " ";    //输出排序前顺序
    }
    cout << endl;
    sort(arr, arr + 10);
    cout << "排序后顺序: ";
    for (int i = 0;i < 10;i++)
    {
        cout << arr[i] << " ";   //输出排序后顺序
    }
    cout << endl;
    return 0;
}

输出结果:
这里写图片描述

例二:设置第三个参数,实现从大到小的排序
通过上面的例子,会产生疑问:要实现从大到小的排序怎么办?这就如前文所说需要在sort函数里的第三个参数里做文章了,告诉程序我要从大到小排序!需要加入一个比较函数compare,此函数的实现过程是这样的。

bool compare(int a, int b)      //定义排序规则
{
    return a > b;               //从大到小排序
}

这就是告诉程序要实现从大到小的排序的方法!

#include 
#include 
using namespace std;
bool compare(int a, int b)        //定义排序规则
{
    return a > b;                 //从大到小排序
}
int main()
{
    int arr[10] = { 8,5,7,3,9,2,1,0,6,4 };
    cout << "排序前顺序: ";
    for (int i = 0;i < 10;i++)
    {
        cout << arr[i] << " ";    //输出排序前顺序
    }
    cout << endl;
    sort(arr, arr + 10,compare);
    cout << "排序后顺序: ";
    for (int i = 0;i < 10;i++)
    {
        cout << arr[i] << " ";    //输出排序后顺序
    }
    cout << endl;
    return 0;
}

输出结果:
这里写图片描述

例三:利用sort函数对字符串从小到大排序

#include 
#include 
using namespace std;
int main()
{
    char str[10] ="adebchgfi";
    cout << "排序前顺序: ";
    for (int i = 0;i < 9;i++)
    {
        cout << str[i];     //输出排序前顺序
    }
    cout << endl;   
    sort(str, str+ 9);
    cout << "排序后顺序: ";
    for (int i = 0;i < 9;i++)
    {
        cout << str[i];     //输出排序后顺序
    }
    cout << endl;
    return 0;
}

输出结果:
这里写图片描述
例四:利用sort函数对字符串从大到小排序

#include 
#include 
using namespace std;
bool compare(char a, char b)               //添加排序规则
{ 
    return a > b;
}
int main()
{
    char str[10] ="adebchgfi";
    cout << "排序前顺序: ";
    for (int i = 0;i < 9;i++)
    {
        cout << str[i];            //输出排序前顺序
    } 
    cout << endl;   
    sort(str, str+ 9,compare);       //调用排序规则
cout << "排序后顺序: ";
    for (int i = 0;i < 9;i++)
    {
        cout << str[i];            //输出排序后顺序
    }
    cout << endl;
    return 0;
}

输出结果:
这里写图片描述

你可能感兴趣的:(算法,排序)