(一)為什麼要用c++標準庫里的排序函式
sort()函式是c++一種排序方法之一,學會了這種方法也打消我學習c++以來使用的氣泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間複雜度為n*log2(n),執行效率較高!
(二)c++標準庫里的排序函式的使用方法
i)sort函式包含在標頭檔案為#include的c++標準庫中,呼叫標準庫里的排序方法可以不必知道其內部是如何實現的,只要出現我們想要的結果即可!
ii)sort函式有三個引數:
(1)第乙個是要排序的陣列的起始位址。
(2)第二個是結束的位址(最後一位要排序的位址)
(3)第三個引數是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個引數,此時預設的排序方法是從小到大排序。
sort函式使用模板:
sort(start,end,排序方法)
下面就具體使用sort()函式結合對陣列裡的十個數進行排序做乙個說明!
例一:sort函式沒有第三個引數,實現的是從小到大
1 #include2例二3 #include4
using
namespace
std;
5int
main()6;
8for(int i=0;i<10;i++)
9 cout
10 sort(a,a+10
);11
for(int i=0;i<10;i++)
12 cout
13return0;
14 }
通過上面的例子,會產生疑問:要實現從大到小的排序腫麼辦?
這就如前文所說需要在sort()函式裡的第三個引數裡做文章了,告訴程式我要從大到小排序!
需要加入乙個比較函式 complare(),此函式的實現過程是這樣的
1
2
3
4
bool
complare(
int
a,
int
b)
這就是告訴程式要實現從大到小的排序的方法!
1 #include2 #include3假設自己定義了乙個結構體nodeusing
namespace
std;
4bool complare(int a,intb)5
8int
main()9;
11for(int i=0;i<10;i++)
12 cout
13 sort(a,a+10,complare);//
在這裡就不需要對complare函式傳入引數了,
14//
這是規則
15for(int i=0;i<10;i++)
16 cout
17return0;
18 }
1有乙個node型別的陣列node arr[100],想對它進行排序:先按a值公升序排列,如果a值相同,再按b值降序排列,如果b還相同,就按c降序排列。就可以寫這樣乙個比較函式:struct
node
2
以下是**片段:
1bool
cmp(node x,node y)
2
sort函式的用法 C 排序庫函式的呼叫
對陣列進行排序,在c 中有庫函式幫我們實現,這們就不需要我們自己來程式設計進行排序了。一 為什麼要用c 標準庫里的排序函式 sort 函式是c 一種排序方法之一,學會了這種方法也打消我學習c 以來使用的氣泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間複雜度為...
sort函式的用法 C 排序庫函式的呼叫
對陣列進行排序,在c 中有庫函式幫我們實現,這們就不需要我們自己來程式設計進行排序了。一 為什麼要用c 標準庫里的排序函式 sort 函式是c 一種排序方法之一,學會了這種方法也打消我學習c 以來使用的氣泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間複雜度為...
sort函式的用法 C 排序庫函式的呼叫
c 標準庫里的排序函式的使用方法 i sort函式標頭檔案 includeii sort函式有三個引數 第乙個是要排序的陣列的起始位址。第二個是結束的位址 最後一位要排序的位址 第三個引數是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個引數,此時預設的排序方法是從小到大排序。sort函式...