我已經在下面寫了選擇排序方法。我想保留一般的代碼,因爲這是一個學校練習,但我知道有更正確的方法來做到這一點,就像Linq一樣。 它運作良好,除此之外它只對屬性PersonalNumber進行排序。我能看到的錯誤是:在C中排序列表的方法#
temp = list[i].PersonalNumber;
list[i].PersonalNumber = list[posMin].PersonalNumber;
list[posMin].PersonalNumber = temp;
有什麼辦法來排序包含的所有列表中的每個索引的屬性?或者我必須爲每個屬性編寫上述代碼?總共有三個屬性。
全部方法:
public static void SelectionSort(List<Person> list) {
// With this method the Person list is sorted in ascending order.
//posMin is short for position of min
int posMin, temp;
for (int i = 0; i < list.Count - 1; i++) {
posMin = i;//Set posMin to the current index of array
for (int j = i + 1; j < list.Count; j++) {
if (list[j].PersonalNumber < list[posMin].PersonalNumber) {
//posMin will keep track of the index that min is in, this is needed when a swap happens
posMin = j;
}
}
//if pos_min no longer equals i than a smaller value must have been found, so a swap must occur
if (posMin != i) {
temp = list[i].PersonalNumber;
list[i].PersonalNumber = list[posMin].PersonalNumber;
list[posMin].PersonalNumber = temp;
}
}
}
你可以使用LINQ的,它會進行排序:
你會然後用lambda表達式消費這用簡單的標準給你列表 –
嗨,我還是個新手。我稍後離開Linq。我仍然在學習基礎知識。 – Max
Linq是你對這個「排序」事物的朋友:-p http://stackoverflow.com/questions/722868/sorting-a-list-using-lambda-linq-to-objects – ManoDestra