sort函式的用法

2021-09-26 03:24:28 字數 1649 閱讀 4400

使用sort進行排序,以n臺機器為例,每乙個機器有最長的工作時間和機器等級;那麼這裡需要注意的是,乙個機器對應的工作時間和機器等級是相互繫結的,所以這裡使用結構體,結構體包含兩個成員,乙個是機器的工作時間,乙個是機器的等級;那麼對於排序,我們按照機器時間優先進行排序,在機器時間相同的情況下,再按照機器等級進行排序;同理按照這種方法可以分為優先順序1>優先順序2>…>優先順序n進行排序,只需要在cmp函式中修改對應的即可,而且sort函式進行排序的時間複雜度為n*log2n,比冒泡之類的排序演算法效率要高,sort函式包含在標頭檔案為#include的c++標準庫中。

#include

using namespace std;

const

int maxn =

1e5+10;

struct node

machine[maxn]

;int

cmp(node a, node b)

intmain()

輸出結果:

排序之前:991

1001

1002992

1003

排序之後:

1003

1002

1001992

991

可以注意到時間為第一優先順序,等級為第二優先順序

三個優先順序可以按下面去寫

先按a值公升序排列,如果a值相同,再按b值降序排列,如果b還相同,就按c降序排列。就可以寫乙個比較函式:

bool cmp

(node x,node y)

使用sort進行簡單的公升序和降序

#include

using namespace std;

const

int maxn =

1e5+10;

int a[maxn]

;int n;

intcmp

(int a,

int b)

intmain()

輸出結果:這裡只需要改變cmp函式,即可完成公升序或者降序的操作,非常方便

排序之前:13

4563

6782

排序之後:12

3345

6678

標準庫里已經有現成的了,就在functional裡,include進來就行了。functional提供了一堆基於模板的比較函式物件。它們是(看名字就知道意思了):equal_to、not_equal_to、greater、greater_equal、less、less_equal。對於這個問題來說,greater和less就足夠了,直接拿過來用:

公升序:sort(begin,end,less());

降序:sort(begin,end,greater()).

比如:

#include

#include

//因為用了sort()函式

#include

//因為用了greater()

偽**: 進行降序

sort

(a,a+

20,greater<

int>()

);

sort函式的用法

sort函式的用法 做acm題的時候,排序是一種經常要用到的操作。如果每次都自己寫個冒泡之類的o n 2 排序,不但程式容易超時,而且浪費寶貴的比賽時間,還很有可能寫錯。stl裡面有個sort函式,可以直接對陣列排序,複雜度為n log2 n 使用這個函式,需要包含標頭檔案。這個函式可以傳兩個引數或...

sort函式的用法

sort函式包含在標頭檔案 include 中 1 預設的sort函式是按公升序排。sort a,a n 兩個引數分別為待排序陣列的首位址和尾位址,或者可以首尾指標。又如 vector iterator iter1 v.begin vector iterator iter2 v.begin sort...

Sort函式的用法

stl 裡面有個 sort 函式,可以直接對陣列排序,複雜度為 n log2 n 使用這個函式,需要包含標頭檔案。這個函式可以傳 兩個引數或三個引數 第乙個引數是要排序的 區間首位址 第二個引數是 區間尾位址的下一位址 也就是說,排序的區間是 a,b 簡單來說,有乙個陣列int a 100 要對從a...