反转数组 Reverse

反转数组, 就是将数组中各元素转换到它相反的位置:

  • 第一个位置的元素移到最后一位
  • 第二个位置的元素移到倒数第二位
  • 依次类推

得到的结果如下图所示:

reverse array

操作过程

根据反转数组的描述, 使用靠拢型双指针法遍历整个数组, 并交换元素的值.

操作步骤如下图所示:

reverse array steps

代码实现

#![allow(unused)]
fn main() {
pub fn reverse_array(arr: &mut [i32]) {
    if arr.len() < 2 {
        return;
    }

    let mut start = 0;
    let mut end = arr.len() - 1;
    while start < end {
        let tmp = arr[end];
        arr[end] = arr[start];
        arr[start] = tmp;
        start += 1;
        end -= 1;
    }
}

#[cfg(test)]
mod tests {
    use super::reverse_array;

    #[test]
    fn test_reverse_array() {
        let mut arr = [1, 2, 3, 4, 5];
        reverse_array(&mut arr);
        assert_eq!(arr, [5, 4, 3, 2, 1]);
    }
}
}