自定義結構體進行對結構體內部的各個項進行排序
題目描述:這是王道上的題目,我自己仿照答案練了一下,核心要點就是對sort函式寫乙個自定義的函式:有n個學生的資料,將學生資料按成績高低排序(從低到高,這一點可以從所給的例項中體現出來),如果成績相同則按姓名字元的字母序排序,如果姓名的字母序也相同則按照學生的年齡排序,並輸出n個學生排序後的資訊。
輸入:
測試資料有多組,每組輸入第一行有乙個整數n(n<=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的字母序靠前(因為a的asc碼比a的asc碼要小),這一點不違背,只要是按照從小到大的順序即可。
2000年清華大學計算機研究生機試真題
**為:
#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...