使用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降序排列。就可以寫乙個比較函式:
使用sort進行簡單的公升序和降序bool cmp
(node x,node y)
輸出結果:這裡只需要改變cmp函式,即可完成公升序或者降序的操作,非常方便#include
using namespace std;
const
int maxn =
1e5+10;
int a[maxn]
;int n;
intcmp
(int a,
int b)
intmain()
標準庫里已經有現成的了,就在functional裡,include進來就行了。functional提供了一堆基於模板的比較函式物件。它們是(看名字就知道意思了):equal_to、not_equal_to、greater、greater_equal、less、less_equal。對於這個問題來說,greater和less就足夠了,直接拿過來用:排序之前:13
4563
6782
排序之後:12
3345
6678
公升序: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...