演算法筆記(十一)sort函式考場排名

2021-08-20 13:11:47 字數 909 閱讀 6460

題目:

有n個考場,每個考場有若干數量的考生。現在給出各個考場中的考生的准考證號與分數,要求所有考生按照考生分數從高到低排序,並按順序輸出所有考生的准考證號,排名,考場號以及考場內排名。

思路:在student結構體型別中存放題目資訊(准考證號,分數,考場號,考場內排名)

分數不相同時,按照分數從大到小排,否則按照學號從小到大排序

**:#include

#include

#include

using namespace std;

struct studentstu[30010];

bool cmp(student a, student b)

int main()

sort(stu+num-k, stu+num, cmp);         //將該考場的考生排序

stu[num-k].local_rank = 1;             //該考場第1名的local_rank記為1

for(int j=num-k+1; jif(stu[j].score == stu[j-1].score) //如果與前一位考生同分

else}}

printf("%d\n", num);                      //輸出總考生數

sort(stu, stu+num, cmp);                  //將所有考生排名

int r=1;                                  //當前考生排名

for(int i=0; i

printf("%s", stu[i].id);

printf("%d%d%d\n", r,stu[i].location_number, stu[i].local_rank);

}return 0;

}

STL庫中快排sort函式詳解

使用 include using namespace std 作用 排序 時間複雜度 n lg n 實現原理 sort並不是簡單的快速排序,它對普通的快速排序進行了優化,此外,它還結合了插入排序和推排序。系統會根據你的資料形式和資料量自動選擇合適的排序方法,這並不是說它每次排序只選擇一種方法,它是在...

sort演算法函式排序示例

include include include include using namespace std 自己定義的比較函式,sort預設按照運算子 的關係從小到大進行排序。通過定義自己的比較函式,可以定義 自己想要的 關係 並在滿足這種關係時,返回true。比較函式的輸入引數為待比較的物件。bool...

STL學習筆記之sort演算法

stl所提供的各式各樣的演算法中,sort 是最複雜龐大的乙個。這個演算法接受兩個隨機訪問迭代器,然後將區間內的所有元素以漸增方式由小到大重新排列。還有個版本則允許使用者指定乙個仿函式,作為排序標準。stl中的所有關係型容器都擁有自動排序功能,所以不需要sort演算法。序列式容器中的stack,de...