ภาพรวม
บทความนี้สาธิตวิธีจัดเรียงอาร์เรย์จำนวนเต็มจากมากไปน้อย (descending order) โดยใช้ Array.Sort พร้อม delegate การเปรียบเทียบแบบกำหนดเอง
โค้ดตัวอย่าง
using System;
public class Demo {
public static void Main(string[] args) {
int[] arr = { 87, 23, 65, 29, 67 };
Console.WriteLine("Initial Array...");
foreach (int item in arr) {
Console.WriteLine(item);
}
// จัดเรียงแบบ descending
Array.Sort(arr, (val1, val2) => val2.CompareTo(val1));
Console.WriteLine("Sorted Array in decreasing order...");
foreach (int item in arr) {
Console.WriteLine(item);
}
}
}
ผลลัพธ์
Initial Array...
87
23
65
29
67
Sorted Array in decreasing order...
87
67
65
29
23
วิธีอื่นๆ ในการจัดเรียง descending
1. ใช้ LINQ (สร้างอาร์เรย์ใหม่ ไม่แก้ไขต้นฉบับ)
var sorted = arr.OrderByDescending(x => x).ToArray();
2. ใช้ Array.Sort แล้ว Array.Reverse
Array.Sort(arr);
Array.Reverse(arr);
3. ใช้ Comparison delegate แบบเต็ม
Array.Sort(arr, new Comparison<int>((val1, val2) => val2.CompareTo(val1)));
คำอธิบาย
val2.CompareTo(val1)คืนค่าลบเมื่อ val2 > val1 ทำให้จัดเรียงจากมากไปน้อย- Lambda expression
(val1, val2) => val2.CompareTo(val1)เป็นรูปแบบสั้นของ Comparison delegate Array.Sortจัดเรียงแบบ in-place (แก้ไขอาร์เรย์ต้นฉบับ)