数组的逆序遍历

逆序排序

逆序排列的核心思想是交换数组的首尾元素,直到中间位置。

具体步骤

  • 初始化两个指针,一个指向数组的开头,另一个指向数组的末尾。
  • 交换这两个指针所指向的元素。
  • 将前面的指针向后移动,后面的指针向前移动。
  • 重复上述步骤,直到两个指针相遇或交错。

一维数组的逆序

方法一:

public class Demo01 {
	public static void main(String[] args) {
		int[] numbers={1,2,3,4,5,6};
		int[] num=new int[numbers.length];
		for(int i=0;i<numbers.length;i++) {
			num[i]=numbers[numbers.length-i-1];
		}
		System.out.println(Arrays.toString(numbers));
	}
}

方法二:

    public void numbers() {
        int temp = 0;
        for (int i = 0; i < numbers.length / 2; i++) {
            temp = numbers[i];
            numbers[i] = numbers[numbers.length - i - 1];
            numbers[numbers.length - i - 1] = temp;
        }
    }

方法三:利用StringBuilder

public class Main {

    public static void main(String[] args) {


        String str = "Hello World";


        StringBuilder sb = new StringBuilder(str);


        System.out.println("反序输出: " + sb.reverse().toString());


    }


}

运行结果

二维数组的逆序

//逆序遍历
public class work2 {
public static void main(String[] args) {
	int[][] array= {
			{1,2,3},
			{4,5,6},
			{7,8,9}
	};
	int dex=0;
	for(int i=array.length-1;i>=0;i--) {
		for(int k=array[i].length-1;k>=0;k--) {
			System.out.print(array[i][k]+"\t");
			
		}
		System.out.println();
	}
}

运行结果

练习:

假设有一个长度为5的数组,数组元素通过键盘录入,如下所示:
    int[] arr = {1,3,-1,5,-2}

要求:
    创建一个新数组newArr[],新数组中元素的存放顺序与原数组中的元素逆序,并且如果原数组中的元素值小于0,
    在新数组中按0存储。最后输出原数组和新数组中的内容

public class Test6 {
	public static void main(String[] args) {
		// 定义原数组
		int[] arr = new int[5];
 
		Scanner sc = new Scanner(System.in);
 
		// 采用键盘录入给数组的每一个元素赋值
		System.out.println("请输入5个整数:");
		for (int i = 0; i < arr.length; i++) {
			arr[i] = sc.nextInt();
		}
 
		System.out.println("原数组内容:");
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + "  ");
		}
		System.out.println();
 
		// arr : 1 3 -1 5 -2 
		
		// 定义新数组
		int[] newArr = new int[arr.length]; 
		// 模拟新数组的索引
		int index = 0;// index = 3
 
		for (int i = arr.length - 1; i >= 0; i--) {// i = 1
			if (arr[i] < 0) {
				newArr[index] = 0;
			} else {
				newArr[index] = arr[i];
			}
			
			index++;
		}
		
		System.out.println("新数组内容:");
		for (int i = 0; i < newArr.length; i++) {
			System.out.print(newArr[i] + "  ");
		}
 
	}
 
}

输出结果:

请输入5个整数:
5
3
7
9
5
原数组内容:
5  3  7  9  5  
新数组内容:
5  9  7  3  5  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值