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

จัดเรียง String Array ใน C#

ภาพรวม

ใช้ Array.Sort จัดเรียงอาร์เรย์สตริงแบบ In-place (แก้ไขอาร์เรย์ต้นฉบับ) หรือ LINQ OrderBy สร้างอาร์เรย์ใหม่

โค้ดตัวอย่าง


using System;
using System.Linq;

public class Program {
    public static void Main() {
        string[] values = { "tim", "amit", "tom", "jack", "saurav" };

        Console.WriteLine("Original: " + string.Join(", ", values));

        // วิธีที่ 1: Array.Sort (In-place)
        Array.Sort(values);
        Console.WriteLine("Array.Sort: " + string.Join(", ", values));

        // Reset
        values = new[] { "tim", "amit", "tom", "jack", "saurav" };

        // วิธีที่ 2: LINQ OrderBy (สร้างใหม่)
        var sorted = values.OrderBy(x => x).ToArray();
        Console.WriteLine("LINQ OrderBy: " + string.Join(", ", sorted));

        // วิธีที่ 3: Descending
        var desc = values.OrderByDescending(x => x).ToArray();
        Console.WriteLine("Descending: " + string.Join(", ", desc));
    }
}

ผลลัพธ์


Original: tim, amit, tom, jack, saurav
Array.Sort: amit, jack, saurav, tim, tom
LINQ OrderBy: amit, jack, saurav, tim, tom
Descending: tom, tim, saurav, jack, amit

Case-Insensitive Sorting


// Array.Sort
Array.Sort(values, StringComparer.OrdinalIgnoreCase);

// LINQ
var sorted = values.OrderBy(x => x, StringComparer.OrdinalIgnoreCase).ToArray();

Custom Sorting (เช่น ความยาว)


// ตามความยาว แล้วตามตัวอักษร
var byLength = values
    .OrderBy(x => x.Length)
    .ThenBy(x => x)
    .ToArray();

// ผลลัพธ์: tim, tom, jack, amit, saurav

Performance

MethodTimeSpaceMutates Original
Array.SortO(n log n)O(1) / O(log n)Yes
LINQ OrderByO(n log n)O(n)No (new array)
List.SortO(n log n)O(1)Yes

สำหรับ List<string>


var list = new List<string> { "tim", "amit", "tom" };
list.Sort(); // In-place
// หรือ
var sorted = list.OrderBy(x => x).ToList(); // New list