Làm thế nào chính xác công việc của Javascript array.reverse()
? Nó có đi qua và trao đổi mọi phần tử của mảng không? Nếu vậy, có phải mất O (n) để hoán đổi một mảng có kích thước n không?Mảng của Javascript Đảo ngược
Tôi đoán lý do tôi hỏi là vì tôi đã tự hỏi nếu array.reverse()
là giống như:
for(var i = 0; i < a.length/2; i++) {
var holder = a[i];
a[i] = a[a.length - 1 - i];
a[a.length - 1 - i] = holder;
}
LƯU Ý: Sorry nếu mã javascript tôi đăng là không chính xác, đó là khá muộn ngay bây giờ.
EDIT: Cố định a.length
đến a.length/2
.
Đó là không chính xác bởi vì bằng cách vượt qua mảng đầy đủ, bạn sẽ trao đổi tất cả các phần tử hai lần và trở về mảng ban đầu. Sử dụng 'a.length/2' (phân chia số nguyên của a.length và 2) – xanatos