C++内置函数——sort 函数:实现数组的排序功能

版权声明:版权所有,违权必究!!! https://blog.csdn.net/IT_SoftEngineer/article/details/82859899

使用该函数,只需引用头文件:

#include<algoritnm>

语法描述为: 

// 参数begin,end 表示一个范围,分别为待排序数组的首地址和尾地址

// 排列的数组中包括左边的 begin 但不包括右边的 end

sort (begin,end)

// sort (a,a+10)将把数组a按升序排序,因为sort函数默认为升序

将数组按降序排列的方法一:

 自己编写 compare 函数

// 两个分别表示待排序数组的首地址和尾地址,compare 表示比较的类型

sort (begin ,end ,compare)

代码实现 

#include<iostream>
// 使用sort函数的头文件说明
#include<algorithm>
using namespace std;
// 自己编写函数来实现升序排列
bool compare (int a,int b)
{
    // 升序排列,如果改为return a>b ,则为降序
    return a<b;
}
int main()
{
    int a[10] = {7,4,5,23,2,73,41,52,28,60},i;
    for(i=0;i<10;i++)
        cout<<a[i]<<" ";
    cout<<endl;
    sort(a,a+10,compare);
    for(i=0;i<10;i++)
        cout<<a[i]<<" ";
    return 0;
}

将数组按降序排列方法二:

利用 functional 标准库

使用头文件 #include<functional>即可使用标准库

functional 提供了如下的基于模板的比较函数对象

  • equal_to<Type>: 等于
  • not_equal_to<Type>: 不等于
  • greater<Type>: 大于
  • greater_equal<Type>: 大于等于
  • less<Type>: 小于
  • less_equal<Type>: 小于等于 

对于这个问题来说,greater和less就足够了,可以直接拿来用

  • 升序:sort(begin,end,less<data-type>())
  • 降序:sort(begin,end,greater<data-type>())

代码实现

#include<iostream>
// 调用sort函数的头文件说明
#include<algorithm>
// 调用functional库的头文件说明
#include<functional>
using namespace std;
int main()
{
    int a[10] = {7,4,5,23,2,73,41,52,28,60},i;
    for(i=0;i<10;i++)
        cout<<a[i]<<" ";
    cout<<endl;
    // 降序
    sort(a,a+10,greater<int>());
    for(i=0;i<10;i++)
        cout<<a[i]<<" ";
    return 0;
}

猜你喜欢

转载自blog.csdn.net/IT_SoftEngineer/article/details/82859899