7 37 模擬EXCEL排序 改造sort

2021-09-25 13:49:48 字數 1838 閱讀 8862

7-37 模擬excel排序 (25 分)

excel可以對一組紀錄按任意指定列排序。現請編寫程式實現類似功能。

輸入格式:

輸入的第一行包含兩個正整數n(≤10

​5​​ ) 和c,其中n是紀錄的條數,c是指定排序的列號。之後有 n行,每行包含一條學生紀錄。每條學生紀錄由學號(6位數字,保證沒有重複的學號)、姓名(不超過8位且不包含空格的字串)、成績([0, 100]內的整數)組成,相鄰屬性用1個空格隔開。

輸出格式:

在n行中輸出按要求排序後的結果,即:當c=1時,按學號遞增排序;當c=2時,按姓名的非遞減字典序排序;當c=3時,按成績的非遞減排序。當若干學生具有相同姓名或者相同成績時,則按他們的學號遞增排序。

輸入樣例:

3 1000007 james 85

000010 amy 90

000001 zoe 60

輸出樣例:

000001 zoe 60

000007 james 85

000010 amy 90

其實就是對sort排序進行改造,用結構體存三組資料。

版本一:string類 (佔記憶體大,但是過載了許多符號)

#include

#include

using namespace std;

struct node

;bool cmp1

(const node &a,

const node &b)

bool cmp2

(const node &a,

const node &b)

bool c***

(const node &a,

const node &b)

intmain()

switch

(c)for

(int i =

0;i < n;i++

)return0;

}

版本二:char陣列

#include

#include

#include

using namespace std;

struct node

;bool cmp1

(const node &a,

const node &b)

bool cmp2

(const node &a,

const node &b)

bool c***

(const node &a,

const node &b)

intmain()

switch

(c)for

(int i =

0;i < n;i++

)return0;

}

版本三:改造優先佇列(**寫的有點逗…)

#include

#include

using namespace std;

struct node_1};

struct node_2};

struct node_3};

intmain()

for(

int i =

0;i < n;i++

)break;}

case2:

for(

int i =

0;i < n;i++

)break;}

case3:

for(

int i =

0;i < n;i++

)break;}

}return0;

}

7 37 模擬EXCEL排序

7 37 模擬excel排序 25 分 excel可以對一組紀錄按任意指定列排序。現請編寫程式實現類似功能。輸入的第一行包含兩個正整數n 10 5 和c,其中n是紀錄的條數,c是指定排序的列號。之後有 n行,每行包含一條學生紀錄。每條學生紀錄由學號 6位數字,保證沒有重複的學號 姓名 不超過8位且不...

7 37 模擬EXCEL排序 25分

excel可以對一組紀錄按任意指定列排序。現請編寫程式實現類似功能。輸入格式 輸入的第一行包含兩個正整數n 10 5 和c,其中n是紀錄的條數,c是指定排序的列號。之後有 n行,每行包含一條學生紀錄。每條學生紀錄由學號 6位數字,保證沒有重複的學號 姓名 不超過8位且不包含空格的字串 成績 0,10...

模擬EXCEL排序

excel可以對一組紀錄按任意指定列排序。現請編寫程式實現類似功能。輸入的第一行包含兩個正整數n 10 5 和 c,其中 n是紀錄的條數,c是指定排序的列號。之後有 n行,每行包含一條學生紀錄。每條學生紀錄由學號 6位數字,保證沒有重複的學號 姓名 不超過8位且不包含空格的字串 成績 0,100 內...