Đây hoàn toàn là kiến thức của riêng tôi, nếu tôi định viết mã, tôi chỉ sử dụng .Max()
..Max() vs OrderByDescending(). Đầu tiên()
Lúc đầu suy nghĩ .Max()
chỉ cần thực hiện một lần đi qua numbers
để tìm giá trị tối đa, còn cách thứ hai phải sắp xếp toàn bộ nội dung đếm được rồi tìm số đầu tiên. Vì vậy, nó là O(n)
và O(n lg n)
. Nhưng sau đó tôi đã suy nghĩ có lẽ nó biết nó chỉ cần cao nhất và chỉ lấy nó.
Câu hỏi: là LINQ và/hoặc trình biên dịch đủ thông minh để hình dung ra rằng nó không cần phải sắp xếp toàn bộ đếm được và sôi mã xuống cơ bản giống như MAX()? Có cách nào để định lượng được không?
IEnumerable<int> numbers = Enumerable.Range(1, 1000);
int max = numbers.Max();
int max2 = numbers.OrderByDescending(x => x).First();
Tốt điểm! +1 –