Perl không phải là C; nếu bạn cố gắng tính toán một số nguyên quá lớn, bạn sẽ nhận được kết quả dấu phẩy động thay thế (trừ khi bạn use bigint
, làm cho số nguyên không bị chặn). Ngoài ra, bạn nhận được inf
.
Bạn có thể thấy điều này với Devel::Peek
, trong đó cho thấy bạn trình bày nội Perl của một giá trị:
$ perl -E 'use Devel::Peek; Dump(1000); Dump(1000**100); Dump(1000**100 + 1)'
SV = IV(0xcdf290) at 0xcdf2a0
REFCNT = 1
FLAGS = (PADTMP,IOK,READONLY,pIOK)
IV = 1000
SV = NV(0xd04f20) at 0xcdf258
REFCNT = 1
FLAGS = (PADTMP,NOK,READONLY,pNOK)
NV = 1e+300
SV = NV(0xd04f18) at 0xcdf228
REFCNT = 1
FLAGS = (PADTMP,NOK,READONLY,pNOK)
NV = 1e+300
IV
chỉ ra một giá trị số nguyên; NV
cho biết giá trị dấu phẩy động (Số?).
Bạn chắc chắn nên sử dụng một công cụ phù hợp với mục đích của bạn thay vì hack mờ; List::Util::min
như đã đề cập trong câu trả lời khác là tuyệt vời. Chỉ cần nghĩ bạn có thể muốn xác nhận về câu hỏi của bạn ban đầu :)
Đây có thể là tốt nhất để sắp xếp. Sắp xếp là 'O (n log n)'. Khi so sánh với đi qua ('O (n)'), nó chỉ là vấn đề nếu bạn có mảng với hàng nghìn đến hàng triệu mục. –
Tôi không thích câu trả lời đó. Perl có phải là ngôn ngữ SLOW không? Chắc chắn là không. Phải có một giải pháp thanh lịch hơn. Không có giá trị MAX?!? – Zak
Perl sử dụng nội bộ * Sắp xếp nhanh *, do đó tôi đoán trường hợp xấu nhất sẽ vẫn là 'O (n log n)'. –