【算法基础】数组反转

2023-03-04 13:35:25 浏览数 (1)

问题描述

问题: 将数组[1,2,3,4,5,6,7,8,9]反转为[9,8,7,6,5,4,3,2,1] 实现思路: 数组对称位置的元素互换。

方案1:通过中间变量交换元素位置

思路:首尾对应位置的元素交换。

  • 确定交换几次(次数 = 数组.length / 2)
  • 谁和谁交换(首尾对称位置)
代码语言:javascript复制
public static void main(String[] args) {

	 int[] arr = {1,2,3,4,5,6,7,8};
     for (int i = 0; i < arr.length / 2; i  ) {

     	// 定义一个中间变量赋值,分析第一次循环赋值情况
     	int temp = arr[i];//0

    	arr[i]=arr[arr.length-1-i];//arr[0]=8

		// 交换值的位置
    	arr[arr.length-1-i] = temp;//arr[7]=0
    
	}
	//输出: 9,8,7,6,5,4,3,2,1
}    

方案2:新建数组 首尾交换赋值

思路: 创建一个新数组,将原数组尾部的值赋值给新数组首部,再将新数组复制到原数组

代码语言:javascript复制
public static void main(String[] args) {

	int[] arr = {1,2,3,4,5,6,7,8};
	
	// 方案2:新建数组   首尾交换赋值
	int[] arr2 = new int[arr.length];
    for (int i = arr33.length - 1; i >= 0 ; i--) {

    // 将arr的尾项赋值给arr2的首项
    arr2[arr.length-1-i] = arr33[i];
    
    // 再将新数组指针指向原数组,arr2会被垃圾回收器回收
    arr = arr2; 
    //输出:9,8,7,6,5,4,3,2,1
    
    }
}

方案3:新建数组 首索引、尾索引。

思路: 初始化条件可以有多个变量

代码语言:javascript复制
public static void main(String[] args) {
	int[] arr = {1,2,3,4,5,6,7,8};
	int[] arr2 = new int[arr.length];
	// 初始化条件可以有多个,用作首索引,和尾索引
	for (int i = arr.length, j=0; j < arr.length; i--, j  ) {

		// 循环初始化条件创建两个变量,为两个索引的值
		arr2[j] = i;
	}
	//再将新数组指针指向原数组,arr2会被垃圾回收器回收
	arr = arr2; 
	//输出:9,8,7,6,5,4,3,2,1
}

0 人点赞