Đây là mã số quicksort tôi đã viết. Hàm này không hoạt động vì nó không thể đạt được trường hợp cơ sở. Nếu tôi đăng nhập trục, r
và l
vào bảng điều khiển, chúng vẫn giữ nguyên cho dù chức năng sắp xếp được gọi bao nhiêu lần. Vì vậy, tôi tự hỏi, nếu đối số l
, r
không thực sự được chuyển vào hàm làm dữ liệu. Tại sao nó lại xảy ra?Truy cập vô hạn trong JavaScript quicksort?
function sort(data){
if(data.length < 2){
return data;
}
else{
var l = [];
var r = [];
var pivot = parseInt(data.length/2);
for(i=0; i<data.length; i++){
if(data[i] > data[pivot]){
r.push(data[i]);
}
else{
l.push(data[i]);
}
}
return sort(l).concat(sort(r));
}
}
Bạn đang ghi đè l và r mỗi cuộc gọi đệ quy. Bạn nên bắt đầu chúng bên ngoài chức năng sắp xếp của bạn. – marteljn
@marteljn Có. Nhưng nếu tôi đặt console.log (l) trước khi trở về, nó in cùng một mảng.Vì vậy, tôi đang bối rối –
Tôi phải hỏi: Có gì sai với chỉ cần gọi 'originalArray.sort()'? –