演算法 結構體排序基礎

2022-09-19 02:30:17 字數 903 閱讀 3538

1.乙個結構體中有三個元素,按照其中乙個元素進行公升序排列:

先定義乙個結構體:

struct node 

a[1005];

然後寫排序**:(cmp函式裡面的排序方法可以自定義)      (函式返回值可以統一為bool)

int cmp(node a, node b)

在main函式裡面用sort進行排序:

sort(a, a+ n, cmp);
原理:按照其中乙個元素的大小來控制兩個結構體間誰大, sort實現快排。

測試**:

#include#includeusing namespace std;

struct node

a[1005];

bool cmp(node a, node b)

int main()

; a[1] = ;

a[2] = ;

sort(a, a + 3, cmp);

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

return 0;

}

2:按分數從高到低輸出上線考生的考號與分數,其間用1空格分隔。若有多名考生分數相同,則按他們考號的公升序輸出。

**:

struct  student

student[100];

int cmp(student a, student b)

return a.sum >b.sum;

}sort(student, student+n, cmp);

結構體及結構體排序

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

結構體排序

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

結構體排序

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