-
sort函數
鎖定
- 中文名
- sort函數
- 外文名
- sort Function
- 頭文件
- #include <algorithm>
- 用 途
- 對給定區間所有元素進行排序
- 所屬範疇
- C++
- 功 能
- 升序、降序
sort函數函數介紹
sort()函數是定義在C++ STL 標準庫中的一個模板函數 ,它的作業是對容器或普通數組中指定範圍內的元素進行排序,排序規則默認以元素值的大小做升序排序,除此之外也可以選擇標準庫提供的其它排序規則(比如std::greater降序排序規則)。最重要的是可以使用函數的形式自定義排序規則,調用時只需要把自定義的排序函數作為參數傳入即可。
[5]
要使用sort(),需要包含頭文件。
#include <algorithm>
語法
Sort(start,end,cmp)
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
(1)start表示要排序數組的起始地址;迭代器的起始位置,對於數組來説就是數組的首地址,一般寫上數組名就可以,因為數組名是一個指針常量。
(2)end表示數組結束地址的下一位;迭代器的結束位置,即首地址加上數組的長度n(代表尾地址的下一地址)。
(3)cmp用於規定排序的方法,可不填,默認升序。迭代器的結束位置,即首地址加上數組的長度n(代表尾地址的下一地址)。
功能
sort函數用於C++中,對給定區間所有元素進行排序,默認為升序,也可進行降序排序。
sort()函數是C++一種排序方法之一,相較冒泡排序和選擇排序所帶來的執行效率不高的問題,sort()函數使用的排序方法是類似於快速排序的方法,時間複雜度為n*log2(n),執行效率較高。
[3]
sort類函數總結
函數名 | 功能描述 |
---|---|
sort | 對給定區間所有元素進行排序 |
stable_sort | 對給定區間所有元素進行穩定排序 |
partial_sort | 對給定區間所有元素部分排序 |
partial_sort_copy | 對給定區間複製並排序 |
nth_element | 找出給定區間的某個位置對應的元素 |
is_sorted | 判斷一個區間是否已經排好序 |
partition | 使得符合某個條件的元素放在前面 |
stable_partition | 相對穩定的使得符合某個條件的元素放在前面 |
sort函數函數示例
示例一
#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]<<endl; sort(a,a+10);//指針 for(int i=0;i<10;i++) cout<<a[i]<<endl; return 0; }
示例二
這就如前文所説需要在sort()函數里的第三個參數了,告訴程序要從大到小排序。
bool compare(int a,int b) { return a>b; }
這就是告訴程序要實現從大到小的排序的方法。
#include<iostream> #include<algorithm> using namespace std; bool compare(int a,int b) { return a>b; } 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]<<endl; sort(a,a+10,compare);//在這裏就不需要對compare函數傳入參數了 for(int i=0;i<10;i++) cout<<a[i]<<endl; return 0; }
假設自己定義了一個結構體node
struct node { int a; int b; double c; }
有一個node類型的數組node arr[100],想對它進行排序:先按a值升序排列,如果a值相同,再按b值降序排列,如果b還相同,就按c降序排列。就可以寫一個比較函數:
以下是代碼片段:
bool cmp(node x,node y) { if(x.a!=y.a) return x.a<y.a; if(x.b!=y.b) return x.b>y.b; return x.c>y.c; }
- 參考資料
-
- 1. 鄭莉,董淵,何江舟 . C++語言程序設計 :清華大學出版社,2010.7
- 2. [美] Stephen Prata. C++ Primer Plus :人民郵電出版社 , 2012.6
- 3. 譚浩強 .C++程序設計(第3版): 清華大學出版社, 2015.8
- 4. 李普曼 .C++ Primer中文版 :電子工業出版社, 2013.9
- 5. C++ sort()函數 .知乎[引用日期2023-08-26]