Trong bài này, chúng ta sẽ tìm hiểu các kỹ thuật khác nhau để tìm giá trị lớn nhất của một mảng trong C#. Và cuối cùng chúng ta sẽ kiểm tra, so sánh hiệu suất để xem đâu là cách tiếp cận nhanh hơn.
Sử dụng Enumerable.Max
Max là một phương thức mở rộng cho interface IEnumerable không yêu cầu tham số và trả về giá trị lớn nhất trong một mảng:
return sourceArray.Max();
Sử dụng OrderByDescending
System.Linq cho phép chúng ta nhận giá trị lớn nhất từ một mảng sau khi sắp xếp nó ở dạng giảm dần:
return sourceArray.OrderByDescending(x => x).First();
Enumerable.MaxBy
Kể từ .NET 6, chúng ta có thể thay thế các phương pháp trên bằng Enumerable.MaxBy:
return sourceArray.MaxBy(x => x);
Tương tự như phương thức lấy phần tử tối đa, .NET 6 cũng cung cấp một phương thức để trả về phần tử tối thiểu:
return sourceArray.MinBy(x => x);
Sử dụng câu lệnh for
Bây giờ, hãy tạo một phương thức GetLargerstElementUsingFor mới để chỉ ra cách có thể tìm phần tử lớn nhất của một mảng với một phép lặp đơn giản:
public int GetLargestElementUsingFor(int[] sourceArray)
{
int maxElement = sourceArray[0];
for (int index = 1; index < sourceArray.Length; index++)
{
if (sourceArray[index] > maxElement)
maxElement = sourceArray[index];
}
return maxElement;
}
Sau đó, lặp lại việc kiểm tra mảng nếu mỗi phần tử lớn hơn giá trị maxElement. Khi phần tử lớn hơn, chúng ta nên gán giá trị của nó cho maxElement.
Khi kết thúc vòng lặp, chúng ta chỉ cần trả về biến maxElement.
Lời kết
Trong bài viết này, chúng ta đã thấy rằng chúng ta có nhiều cách để tìm giá trị lớn nhất từ một mảng.
Sau khi áp dụng Benchmark, ta thấy cách nhanh nhất để tìm ra giá trị lớn nhất sẽ lần lượt như sau: câu lệnh for, Enumerable.Max, MaxBy, OrderByDescending.
Lưu ý rằng, sử dụng vòng lặp for nhanh hơn nhiều so với bất kỳ cách tiếp cận nào khác. Nhanh hơn gần mười hai lần so với cách tiếp cận tốt nhất thứ hai và nhanh hơn gần hai mươi lần so với cách tiếp cận kém nhất.
Vì thế, bạn nên lựa chọn phương pháp phù hợp khi sử dụng để tìm giá trị lớn nhất trong một mảng nhiều phần tử.
Mong bài viết hữu ích, chúc các bạn thành công!Hieu Ho.