在c#中對陣列的定義比較靈活。這裡著重說一下自定義陣列和array類的排序。
在array類中通過屬性length就可以獲取整個陣列中資料的數量,可以通過foreach迭代陣列。
使用rank屬性可以獲取陣列的維數,通過屬性longlength也可獲取陣列中資料的數量,但是基本上不用。
它是當陣列中放置的資料量超出了整數的範圍時才用。
array類中排序的方法比較簡單,對於string 和 int 型別直接用array.sort()就可以。
但是對於自定義的陣列就需要在類中寫出array.sort()中使用的排序方法。
如下:
1namespace
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.
主函式呼叫方式如下:
1using
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)比較函式,裡面含有兩個變數。
1namespace
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 }
將主函式中的排序改成如下:
1using
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...