c++ sort 從大到小排序_【C++】sort函數使用方法


轉載自:https://blog.csdn.net/weixin_39908462/article/details/110614054

一.sort函數

1.sort函數包含在頭文件為#include<algorithm>的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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM