結構體或物件排序

2022-03-19 01:07:31 字數 878 閱讀 9172

經常碰到結構體排序的問題,在此總結一下。

以乙個簡單的例題開始:

例1、有三個人(person結構體),每個人都有name(string型)和age(int型)兩個屬性,現在需要按照下面的規則排序:先以姓名按從小到大排序(如abc#include#includeusing namespace std;

struct person;

void exchange(person &a,person &b)

int main()

//氣泡排序實現

for(i=0;i<3;i++) else if(p[j].name==p[j+1].name)

using namespace std;

int main()

sort(a,a+10,cmp);

for(i=0;i<10;i++);

bool cmp(person a,person b)

}int main()

//排序

sort(p,p+3,cmp);

//依次輸出

for(i=0;i<3;i++);

bool cmp(person a,person b)

if(a.name==b.name && a.age!=b.age)

if(a.name==b.name && a.age==b.age)

}int main()

//排序

sort(p,p+n,cmp);

//依次輸出

for(i=0;i其實,對於結構體或者物件排序時,最關鍵的是寫cmp函式。另外,如果只是對一組資料(一串個數字或者字串)反向排序後輸出,如果只是關心輸出,則可以取巧,直接用sort函式,不用寫cmp**函式,直接在輸出的時候,從length-1開始倒序輸出。

結構體及結構體排序

1 定義的方法struct node 用strut定義乙個結構體,node是結構體的名字,可以自己瞎取。p 1000 這樣你就定義了乙個神奇的陣列!沒錯,它就是node型陣列!上面的 還在結構體的末尾定義了乙個該型的陣列,其實這個陣列不一定要有,而且也可以在主函式中定義,但是感覺上用的比較多,而且這...

結構體排序

description excel可以對一組紀錄按任意指定列排序。現請你編寫程式實現類似功能。input 測試輸入包含若干測試用例。每個測試用例的第1行包含兩個整數 n 100000 和 c,其中 n 是紀錄的條數,c 是指定排序的列號。以下有 n 行,每行包含一條學生紀錄。每條學生紀錄由學號 6位...

結構體排序

貪心演算法中不想交區間問題 題目 解題思路 定義兩個變數,乙個記為結束時間,乙個記為區間數。將結束時間排序,若相同,就將開始時間從大到小排序 若不同,就將結束時間按從小到大排序。這樣第乙個區間是確定的,再比較下乙個區間的開始時間與第乙個區間結束時間的大小,大於則加一。再將結束時間改變即可,繼續迴圈。...