翻譯:
程式設計能力測驗(pat)是由浙江大學電腦科學與技術學院開發的。每個測試應該同時執行在幾個地方,最終和ranklists將合併後立即測試。現在你的工作是編寫乙個程式,正確合併所有ranklists並生成最終的排名。利用c++庫「algorithm」中的sort函式進行排序,sort函式有三個引數如下:輸入格式
每個輸入檔案包含乙個測試用例。對於每個案例,第一行包含乙個正數n(≤100),為測試點的數量。然後輸入n組ranklists,每個輸入起始一行包含乙個正整數k(≤300),為課題組的數量,然後是k行包含考號(13位數)和每個考生的總分。一行中的所有數字用空格分開。
輸出格式
要求將所有考生按分數從高到低排序,分數一樣的按考號排序,並按順序輸出所有考生的准考證號、總排名、考場號以及考場內排名。
sort(首元素位址-必填,尾元素位址的下乙個位址-必填,比較函式-可選)
當不填比較函式時,預設公升序排序。
比較函式常定義為「bool cmp(elemtype a, elemtype b)」的形式,舉例如下:
bool
cmp(student a, student b)
由於要求進行考場內排序,故可在乙個考場的資訊輸入完成後立刻對其進行sort排序,並確定考場內排名。
由於排名時,存在兩者及以上考生成績相同的情況,因此若設考場內第一名排名記為1,則遍歷剩餘考生,若分數與其前一名相同,則排名相同;否則排名為下標差加1。
#include
#include
#include
using
namespace std;
struct studentstu[
30001];
bool
cmp(student a, student b)
intmain()
/*---按考場進行排名---*/
sort
(stu + num - k, stu + num, cmp)
; stu[num - k]
.room_rank =1;
for(j = num - k +
1; j < num; j++)}
/*---對所有人進行排名---*/
sort
(stu, stu + num, cmp)
; stu[0]
.rank =1;
for(i =
1; i < num; i++
)printf
("%d\n"
, num)
;for
(i =
0; i < num; i++
)return0;
}
靈活利用c++庫內函式,完成世間複雜度o(n
)o(n)
o(n)
的快速排序過程,由於該sort()函式在開發初期避免了由於有序序列帶來的演算法退化至o(n
2)o(n^2)
o(n2
)的情況,因此成為很好的排序選擇。
注意cmp()函式依情況進行調整,切莫侷限思路。
[1]. 《演算法筆記》p101-106,p235-242
[2]. using namespace std
[3]. string和string.h的區別
sort函式對結構體多級排序
一 為什麼要用c 標準庫里的排序函式 sort 函式是c 一種排序方法之一,學會了這種方法也打消我學習c 以來使用的氣泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間複雜度為n log2 n 執行效率較高!二 c 標準庫里的排序函式的使用方法 i sort函式...
結構體排序 sort()函式
只有用法示例,沒有函式詳解 該題題目為 有一種有趣的字串價值計算方式 統計字串中每種字元出現的次數,然後求所有字元次數的平方和作為字串的價值 例如 字串 abacaba 裡面包括4個 a 2個 b 1個 c 於是這個字串的價值為4 4 2 2 1 1 21 牛牛有乙個字串s,並且允許你從s中移除最多...
用sort對結構體排序
一 文字描述 當我們使用sort對結構體進行排序時,我們要首先自己編寫乙個排序函式,在排序函式中,規定好排序的優先順序 二 偽 展示 1.先寫標頭檔案 include 呼叫sort函式必備 或者直接編寫c 萬能標頭檔案 include.h 2.編寫題目所需要的結構體 struct num 設定結構體...