【C++】sort函数使用方法

一.sort函数

1.sort函数包含在头文件为#include的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考虑!

2.sort函数的模板有三个参数:

void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

(1)第一个参数first:是要排序的数组的起始地址。

(2)第二个参数last:是结束的地址(最后一个数据的后一个数据的地址)

(3)第三个参数comp是排序的方法:可以是从升序也可是降序。如果第三个参数不写,则默认的排序方法是从小到大排序。

3.实例

sort第三个参数不进行设定默认进行的是从小到大的排序。

#include<iostream>
#include<algorithm>
using namespace std;
main()
{
  //sort函数第三个参数采用默认从小到大
  int a[]={45,12,34,77,90,11,2,4,5,55};
  sort(a,a+10);
  for(int i=0;i<10;i++)
  cout<<a[i]<<" ";
}

这里可以看到是sort(a,a+10),但是数组a一共只有9个元素,为什么是a+10而不是a+9呢?

因为sort方法实际上最后一位地址对应的数是不取的,

而且vector,set,map这些容器的end()取出来的值实际上并不是最后一个值,而end的前一个才是最后一个值!

需要用prev(xxx.end()),才能取出容器中最后一个元素。

如果第三个参数进行设定,可以实现从大到小的排序,例如以下例子,自定义第三个参数,实现从大到小排序。

#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b);
main(){
  //sort函数第三个参数自己定义,实现从大到小
  int a[]={45,12,34,77,90,11,2,4,5,55};
  sort(a,a+10,cmp);
  for(int i=0;i<10;i++)
    cout<<a[i]<<" ";
}
//自定义函数
bool cmp(int a,int b){
  return a>b;
}
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
using namespace std;
int cmp(char a,char b)
{
    
    
return a>b;
}
char map[300];
int main()
{
    
    
    scanf("%s",map);
int      len=strlen(map);
    sort(map,map+len,cmp);
    for(int i=0;i<len;i++)
        printf("%c ",map[i]);
    printf("\n");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/wenrenfudi/article/details/114286387
今日推荐