多關鍵字排序。c

2021-10-03 05:39:36 字數 1154 閱讀 3451

多關鍵字排序

乙個長方形有長和寬,分別設為 a 和 b,現在想對一些長方形進行排序。

有一種新的排序方法。如下:

我們按照兩個長方形的a-b值來對他們按降序排序,如果有重複,按照b值公升序排序,如果還有重複,按照輸入的順序排序。

也就是說,是多關鍵字排序:

第1關鍵字,a-b,降序;

第2關鍵字,b,公升序;

第3關鍵字,輸入的順序,公升序;

輸入有多組測試資料(大概100組),每一組測試資料第一行先給出乙個整數n,代表有n個長方形需要被排序。

長方形被從0到n−1標號。

接下來n行,每一含有兩個整數代表每乙個長方形a和b

第i行描述長方形i−1的資訊。

處理到檔案末尾。

所有整數都在[1,100]的範圍內。

對於每乙個資料,在一行中輸出排好序之後的長方形id,注意每兩個 id 【之間!】有乙個空格,其他地方不要有多餘空格

sample input:

2100 1

1 23

100 50

3 41 2

sample output:

0 10 2 1

思路:定義結構體,裡面儲存對應長方形的三個關鍵字。

注意題目中多組測試資料的輸入方法。

對於多關鍵字排序,也就是基數排序,需要編寫對應的cmp函式。

注意sort函式的用法:sort(begin,end,compare)

#include

#include

#include

using

namespace std;

struct code

arr[

10000];

bool

compare

(code m,code n)

intmain()

sort

(arr,arr+n,compare)

;for

(int i=

0;i1;i++

) cout<.i<<

" ";

printf

("%d\n"

,arr[n-1]

.i);

}return0;

}

lintcode多關鍵字排序

給定 n 個學生的學號 從 1 到 n 編號 以及他們的考試成績,表示為 學號,考試成績 請將這些學生按考試成績降序排序,若考試成績相同,則按學號公升序排序。使用sort方法,先對item0排序,再對item1排序,優先順序越高的排序越後做 class solution param array th...

成績排序 多關鍵字

題目描述 用一維陣列儲存學號和成績,然後,按成績排序輸出。輸入描述 輸入第一行包括乙個整數n 1 n 100 代表學生的個數。接下來的n行每行包括兩個整數p和q,分別代表每個學生的學號和成績。輸出描述 按照學生的成績從小到大進行排序,並將排序後的學生資訊列印出來。如果學生的成績相同,則按照學號的大小...

多關鍵字的分組排序

首先說下order by order by asc是公升序 一般預設是公升序 降序的話是order by desc 如果我們想按照指定的字段順序來排列怎麼做呢 有乙個表t 以下是select from t id name country 1 a tw 2 b jp 3 c us 4 d jp 5 e...