c c sort 對自定義結構體排序

2021-09-11 09:13:22 字數 2649 閱讀 6073

自定義結構體進行對結構體內部的各個項進行排序

題目描述:

n個學生的資料,將學生資料按成績高低排序(從低到高,這一點可以從所給的例項中體現出來),如果成績相同則按姓名字元的字母序排序,如果姓名的字母序也相同則按照學生的年齡排序,並輸出n個學生排序後的資訊。

輸入:

測試資料有多組,每組輸入第一行有乙個整數nn<=1000),接下來的n行包括n個學生的資料。每個學生的資料報括姓名(長度不超過100的字串)年齡(整形數)、成績(小於等於100的正數)。

輸出:

將學生資訊按成績進行排序,成績相同的則按姓名的字母序進行排序。然後輸出學生資訊,按照如下格式:姓名年齡成績

樣例輸入:

3

abc 20 99

bcd 19 97

bed 20 97

樣例輸出:

bcd 19 97

bed 20 97

abc 20 99

學生姓名的字母序區分字母的大小寫,如a要比a的字母序靠前(因為aasc碼比aasc碼要小),這一點不違背,只要是按照從小到大的順序即可

2000年清華大學計算機研究生機試真題

這是王道上的題目,我自己仿照答案練了一下,核心要點就是對sort函式寫乙個自定義的函式:

**為:

#include#include#include#include#include#includeusing namespace std;

struct ebuf[1000];

//分數,姓名,年齡按照公升序進行排列

bool cmp(e a, e b)

int main()

return 0;

}

注意sort(buf,buf + n , cmp), 如果少了cmp 會報錯,這點是顯而易見的,另外要注意的是buf的位址,是整個結構體陣列的起始位址,buf + n 就是第n個結構體陣列元素所在位址的下一位,說明不論是什麼型別的資料,都是 + n (元素個數),這一點只需記下來即可。

執行結果:

第乙個例子

4a 12 91

a 13 90

a 13 91

a 10 91

a 13 90

a 13 91

a 10 91

a 12 91

^c請按任意鍵繼續. . .

所給的樣例完全符合:

3abc 20 99

bcd 19 97

bed 20 97

bcd 19 97

bed 20 97

abc 20 99

^c請按任意鍵繼續. . .

對於sort來說return的是bool型,要麼是 1(true) 要麼是 0 (false), 只要符合例如 return x > y 就是前面的大於後面的即降序這種思想即可。

自定義對結構體排序(sort)

大家都知道,快速排序是不穩定的排序方法。如果對於陣列 現的任意a i a j iinput 本題目包含多組輸入,請處理到檔案結束。對於每組資料,第一行有乙個正整數n 0output 對於每組資料,如果演算法是正確並且穩定的,就在一行裡面輸出 right 如果演算法是正確的但不是穩定的,就在一行裡面輸...

C 結構體自定義排序

宣告 本機無c 環境,以下 均沒有編譯測試,最近golang寫的比較多,語法可能會有問題,請自行測試 sort排序函式簡單使用 include using namespace std int a 100 bool cmp1 int x,int y bool cmp2 int x,int y int ...

使用系統排序演算法對自定義結構體陣列排序方法

一 自定義結構體中的變數是 int usigned int 等型別時 有如下三種方法 include stdafx.h include include include include using namespace std for each 的謂詞,為了輸出不同的物件,這裡利用了函式物件 templ...