C 自定義型別排序

2021-10-06 23:20:03 字數 1836 閱讀 9131

在編寫程式處理資料時經常需要對自己組織的資料進行排序,有時還是不同形式的排序,在c++中可以自定義結構體重載bool operator函式,也可以自己寫int compare()。而在c#中自定義排序,就需要對類的icomparer<>介面進行實現,排序時呼叫sort()方法時將實現的排序介面作為引數傳入即可。

本文同步更新在

假定現在有一組學生的三門課成績

class student

接下來分別實現對學生的成績分科排序和總分排序。

分科排序是指:先按score1由小到大排,若score1一樣則按score2由小到大排,否則按score3由小到大。

總分排序就是按照學生三科成績之和由小到大排。

使用隨機數生成n個學生的分數,並儲存在lista當中

private

static

void

main()

...}

先實現分科排序,建立名為score123rank的類繼承icomparer介面,主要是實現其int compare()函式,實現分科排序的功能。

class score123rank : icomparer

catch

}}

這樣,在主函式中只需要呼叫a.sort(new score123rank())就完成了排序。輸出排序後的結果看一下:

a.

sort

(new

score123rank()

);for(

int i=

0;i)\t\t"

, a[i]

.score1,a[i]

.score2,a[i]

.score3)

;}

類似地,再編寫總分排序的類totalrank。

class totalrank : icomparer

catch

}}

這樣再呼叫a.sort(new totalrank())就對a中按照總分進行了排序。

完整main函式為

private

static

void

main()

a.sort

(new

score123rank()

);for(

int i=

0;i)\t\t"

, a[i]

.score1,a[i]

.score2,a[i]

.score3);}

console.

writeline()

; a.

sort

(new

totalrank()

);for(

int i=

0;i)\t\t"

, a[i]

.score1,a[i]

.score2,a[i]

.score3);}

}

執行結果如下所示。空白行的前邊是分科排名,後邊是總分排名。

C自定義型別

一 自定義型別基本概念 1 結構體 結構體就是將任意多個內建型別變數包含在一起形成的乙個結構,結構特也可以巢狀定義,不能在內部定義自己結構的變數,因為是不完整的型別,但是可以定義指向自己型別的指標,這也是鍊錶的原理,其定義形式如下 struct a 2 列舉 列舉型別是由一些項組成的型別,具體看 列...

sort自定義型別排序

乙個很簡單的問題,不過也磨了我好一會,在些總結記錄。1.對於不用寫自定義資料結構的情況 static int cmp const pair x,const pair y if x.second y.second return x.second y.second else return x.first...

c 自定義排序

class program console.writeline console.writeline source tolist value var list arr.tolist for int i 0 i 10 i console.writeline console.writeline sourc...