合并排序代码未在rust中提供所需的输出

合并排序代码未在rust中提供所需的输出,rust,Rust,我试图在rust中执行合并排序代码,但它没有提供所需的输出。我尝试调试了一会儿,但遗憾的是,我找不到错误所在。 这是铁锈操场上的一个。你能调试一下吗? fn main(){ 设mut-vec:vec=vec![5,7,1,1,3,8,4,4,3,2,1,8,4,9]; 设len=vec.len(); 设左_索引:usize=0; let right_index:usize=len-1; 除法(&mut vec,左索引,右索引); println!(“{:?}”,vec); } fn除法(mut

我试图在rust中执行合并排序代码,但它没有提供所需的输出。我尝试调试了一会儿,但遗憾的是,我找不到错误所在。 这是铁锈操场上的一个。你能调试一下吗?

fn main(){
设mut-vec:vec=vec![5,7,1,1,3,8,4,4,3,2,1,8,4,9];
设len=vec.len();
设左_索引:usize=0;
let right_index:usize=len-1;
除法(&mut vec,左索引,右索引);
println!(“{:?}”,vec);
}
fn除法(mut-vec:&mut-vec,左索引:usize,右索引:usize){
如果右索引>左索引{
设中间指数=(左指数+右指数)/2;
除法(&mut vec、左索引、中索引);
除法(&mut vec,中间索引+1,右索引);
排序和合并(&mut vec、左索引、右索引、中索引)
}
}  
fn排序和合并(vec:&mut-vec,左索引:usize,右索引:usize,中索引:usize){
让mut vec_向左:vec=vec![];
让mut vec_向右:vec=vec![];
对于左索引中的i=中间索引{
向量左推(向量[i]);
}
对于i in(中间索引+1)…=右索引{
vec_右推(vec[i]);
}
设mut i=0;//左向量i
设mut j=0;//j表示向量u右
设mut k=左指数;
而i<(中指数-左指数+1)和&j<(右指数-中指数){
如果向量左[i]>向量右[j]{
vec[k]=vec_right[j];
j+=1;
k+=1;
}
否则{
vec[k]=vec_左[i];
i+=1;
k+=1;
}
}
当我离开时{
vec[k]=vec_左[i];
i+=1;
k+=1;
}
而j
引用相关代码:

  let mut j = 0; // j for vec_right
  ...
  while j < vec_right.len(){
    vec[k] = vec_left[j];
    j += 1;
    k += 1;
  }
让mut j=0;//j代表vec_,对吗
...
而j

在最后一部分中,似乎要使用
vec_right[j]

第一个也是最明显的错误是
vec[k]=vec_left[j]最后。为什么?因为,正如你之前在评论中所说的,
j
vec\u right
的索引,而不是
vec\u left
。你能把它作为答案发布,这样我就可以给你投票了吗??)
  let mut j = 0; // j for vec_right
  ...
  while j < vec_right.len(){
    vec[k] = vec_left[j];
    j += 1;
    k += 1;
  }