Độ phức tạp các bạn làm là 2n .
Nên làm tối tưu hơn (^^)
Chú ý rằng để tìm min max 2 số ta chỉ cần 1 phép so sánh, tìm min max của dãy n số (a1, a2, a3, … an) theo cách như sau: Xét n/2 nhóm 2 số sau: (a1, a2); (a3, a4); (a5, a6); … để tìm min max của hết mỗi nhóm cần n/2 phép so sánh. Đánh số các nhóm này là: b1, b2, …, b[n/2]. Lúc này ở mỗi nhóm ta đều biết min và max của nhóm đó.
Lại chia nhóm tiếp: (b1, b2); (b3, b4); (b5, b6); … có n/4 nhóm, để tìm min max của mỗi nhóm ta cần 2 phép so sánh (1 phép cho 2 min, 1 phép cho 2 max). Tổng cộng là 2 * (n/4) = n/2 phép so sánh.
Lặp lại quá trình trên, ta có số các phép so sánh tiếp theo tính được là n/4, n/8, n/16, n/32, …
Tổng số phép so sánh là: n/2 + n/2 + n/4 + n/8 + n/16 + n/32 + … dễ thấy = 3n/2. Đây chỉ là 1 phép tính giới hạn (lim) đơn giản.