SortedSet<T> มี property Max คืนค่าสูงสุดตามลำดับการเรียง ทำงานใน O(1) คู่กับ Min สำหรับค่าต่ำสุด
ตัวอย่างโค้ดที่ 1: สตริง
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
SortedSet set1 = new SortedSet();
set1.Add("AB");
set1.Add("BC");
set1.Add("CD");
set1.Add("EF");
Console.WriteLine("Elements in SortedSet1...");
foreach (string res in set1)
{
Console.WriteLine(res);
}
Console.WriteLine("Maximum element in SortedSet1 = " + set1.Max);
SortedSet set2 = new SortedSet();
set2.Add("BC");
set2.Add("CD");
set2.Add("DE");
set2.Add("EF");
set2.Add("AB");
set2.Add("HI");
set2.Add("JK");
Console.WriteLine("Elements in SortedSet2 (Enumerator for SortedSet)...");
SortedSet.Enumerator demoEnum = set2.GetEnumerator();
while (demoEnum.MoveNext())
{
string res = demoEnum.Current;
Console.WriteLine(res);
}
Console.WriteLine("Maximum element in SortedSet2 = " + set2.Max);
}
}
ผลลัพธ์
Elements in SortedSet1...
AB
BC
CD
EF
Maximum element in SortedSet1 = EF
Elements in SortedSet2 (Enumerator for SortedSet)....
AB
BC
CD
DE
EF
HI
JK
Maximum element in SortedSet2 = JK
ตัวอย่างโค้ดที่ 2: จำนวนเต็ม พร้อม Min
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
SortedSet set1 = new SortedSet();
set1.Add(5);
set1.Add(50);
set1.Add(20);
set1.Add(10);
set1.Add(70);
set1.Add(60);
set1.Add(55);
set1.Add(95);
Console.WriteLine("Elements in SortedSet...");
foreach (int res in set1)
{
Console.WriteLine(res);
}
Console.WriteLine("Maximum element in SortedSet = " + set1.Max);
Console.WriteLine("Minimum element in SortedSet = " + set1.Min);
}
}
ผลลัพธ์
Elements in SortedSet...
5
10
20
50
55
60
70
95
Maximum element in SortedSet = 95
Minimum element in SortedSet = 5
ข้อสังเกต
MaxและMinต้องการCount > 0มิฉะนั้นโยนInvalidOperationException- เรียงตาม
IComparer<T>(default =Comparer<T>.Default) - String เรียง lexicographic: "AB" < "BC" < "CD" < "EF" < "HI" < "JK"
- Int เรียง numeric: 5 < 10 < 20 < 50 < 55 < 60 < 70 < 95
Range Queries ด้วย GetViewBetween
var set = new SortedSet { 5, 10, 20, 50, 55, 60, 70, 95 };
// ดูเฉพาะช่วง 20-70
var view = set.GetViewBetween(20, 70);
Console.WriteLine(view.Min); // 20
Console.WriteLine(view.Max); // 70
Console.WriteLine(string.Join(", ", view)); // 20, 50, 55, 60, 70
SortedSet vs อื่นๆ สำหรับ Max/Min
| Collection | Max/Min | Complexity | Note |
|---|---|---|---|
| SortedSet<T> | Property Max/Min | O(1) | Best for frequent min/max |
| HashSet<T> | ไม่มี | O(n) | ต้อง LINQ Max()/Min() |
| List<T> | ไม่มี | O(n) | ต้อง LINQ หรือ Sort แล้วดู index |
| PriorityQueue<T> | Peek() ให้ Min | O(1) | .NET 6+, Min-heap only |