Tôi đang triển khai sắp xếp hợp nhất sẽ sắp xếp một mảng loại T
. Trong phương thức merge
của tôi, thuật toán gọi cho phần tử cuối cùng của danh sách bên trái và bên phải là vô cực dương. Làm cách nào tôi có thể nhận được giá trị tối đa mà một loại dữ liệu nhất định có thể giữ?Tìm giá trị tối đa cho phép đối với loại chung T
fn merge<T: PartialOrd + Copy + std::fmt::Debug>(p: usize, q: usize, r: usize, array: &mut Vec<T>) {
let left_size: usize = q - p;
let right_size: usize = r - q;
let mut left: Vec<T> = Vec::new();
let mut right: Vec<T> = Vec::new();
for i in 0..left_size {
left.push(array[p + i]);
}
for i in 0..right_size {
right.push(array[q + i]);
}
left.push(T::max_value()); //where I would put the max value
right.push(T::max_value()); //where I would put the max value
let mut i: usize = 0;
let mut j: usize = 0;
for k in p..r {
if left[i] <= right[j] {
array[k] = left[i];
i += 1;
} else {
array[k] = right[j];
j += 1;
}
}
}
'mảng: & tắt Vec' - đó là ** không ** một "mảng". Một mảng có kích thước được biết đến tại thời gian biên dịch. Xem thêm [Tại sao nó không khuyến khích chấp nhận một tham chiếu đến một String (& String), Vec (& Vec) hoặc Box (& Box) như một đối số hàm?] (Https://stackoverflow.com/q/40006219/155423). –
Shepmaster
FWIW, có rất nhiều điểm không thành ngữ với mã này. Bạn có thể xem xét [đăng mã làm việc của bạn lên Mã đánh giá] (https://codereview.meta.stackexchange.com/questions/5777/a-guide-to-code-review-for-stack-overflow-users). – Shepmaster