Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การจัดเรียงอาร์เรย์แบบลำดับถอยหลัง (Descending) ใน C#

ภาพรวม

บทความนี้สาธิตวิธีจัดเรียงอาร์เรย์จำนวนเต็มจากมากไปน้อย (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 (แก้ไขอาร์เรย์ต้นฉบับ)