C 學習之自定義陣列及其排序

2022-02-21 05:27:09 字數 3024 閱讀 4385

在c#中對陣列的定義比較靈活。這裡著重說一下自定義陣列和array類的排序。

在array類中通過屬性length就可以獲取整個陣列中資料的數量,可以通過foreach迭代陣列。

使用rank屬性可以獲取陣列的維數,通過屬性longlength也可獲取陣列中資料的數量,但是基本上不用。

它是當陣列中放置的資料量超出了整數的範圍時才用。

array類中排序的方法比較簡單,對於string 和 int 型別直接用array.sort()就可以。

但是對於自定義的陣列就需要在類中寫出array.sort()中使用的排序方法。

如下:

1

namespace

arraystudy27

public

string lastname

8public

override

string

tostring()9

",firstname,lastname);11}

12//

compareto是icomparable介面裡面的函式

13//

如果相比較的兩個相等,結果是0

14//

array.sort()會根據返回的值進行排序

15public

intcompareto(person other)

1621

int result = this

.firstname.compareto(other.firstname);

22if(result==0)23

26return

result;27}

28}29 }

上面的類中,是對firstname 排序的,如果firstname相同,就比較lastname.

主函式呼叫方式如下:

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.text;

5using

system.threading.tasks;67

namespace

arraystudy8,

15new person,

16new person,

17new person,

18new person

19};

2021

22array.sort(person);

23foreach(person p in

person)

2427 console.writeline("

rank:

",person.rank);

28 console.writeline("

longlength:

",person.longlength);

29 console.writeline("

length:

",person.length);

30console.readkey();

31return;32

}33}34 }

而對於不能確定要對哪乙個變數進行排序的時候就需要增加乙個新的比較類。這個類是實現了icomparer<>介面.

在這個介面裡面含有int compare(t x,t y)比較函式,裡面含有兩個變數。

1

namespace

arraystudy29

public

class personcomparer:icomparer10

16public

intcompare(person x,person y)

1731

case

personcomparetype.lastname:

3237

default:38

throw

newargumentexception(39"

unexpected compare type"40

);41}42

}43}44 }

將主函式中的排序改成如下:

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.text;

5using

system.threading.tasks;67

namespace

arraystudy8,

15new person,

16new person,

17new person,

18new person

19};

2021

//在sort()後面新增第二個引數,這個引數是比較的方法型別

22 array.sort(person,new

personcomparer(personcomparetype.firstname));

23foreach(person p in

person)

2427 console.writeline("

rank:

",person.rank);

28 console.writeline("

longlength:

",person.longlength);

29 console.writeline("

length:

",person.length);

30console.readkey();

31return;32

}33}34 }

這樣便可以靈活選擇排序的物件了。

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...

C 自定義排序

include include include using namespace std bool compare1 const int a,const int b bool compare2 const int a,const int b bool compare3 const int a,cons...

JavaScript自定義陣列排序

array中有自帶的排序功能,這個使用起來比較方便,我們有一點必須清楚,就是排序的依據,如果sort不傳入引數的話,那就是按照字元編碼 unicode編碼 的順序排序。var a 3 2 1 console.log a 0 charcodeat 0 51 console.log a 1 charco...