一下数组交换代码中的len-1-i是什么意思呀?没有搞懂

是希望 2020-04-08 04:57:09
public static void swap(int a[]) {
int len = a.length;
for (int i = 0; i < (len-1) / 2; i++) {
int tmp = a[i];
a[i] = a[len - 1 - i];
a[len - 1 - i] = tmp;
}
}
...全文
803 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
paullbm 2020-04-08
  • 打赏
  • 举报
回复
目的是实现整个数组倒序,但只需要循环一半就行(因为每次是操作2个元素) 所以for条件是len/2就行!(因为数组元素个数为奇数的时候,最中间的那个是可以不用考虑互换的!) 因为下标是从0开始的,所以len-1就能保证不会下标越界 而len-1-i就是和i对应的元素进行对换 当for循环执行完成,就完成了整个数组的倒序了。

import java.util.Arrays;

public class Temp{
	
	public static void swap(int a[]) {
        int len = a.length;
        for (int i = 0; i < len / 2; i++) {
            int tmp = a[i];
            a[i] = a[len - 1 - i];
            a[len - 1 - i] = tmp;
        }
    }
	
	public static void main(String[] args){
		int arr[] = {8,1,2,3,4,5,6};
		swap(arr);
		System.out.println(Arrays.toString(arr));
	}
}
nayi_224 2020-04-08
  • 打赏
  • 举报
回复
能看出你是想把数组两侧交换位置,但是代码明显写错了
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int l = 4;
		int[] r = new int[l];
		for(int i = 0; i < l; i++) {
			r[i] = i + 1;
		}
		System.out.println(Arrays.toString(r));
		swap(r);
		System.out.println(Arrays.toString(r));
	}

	public static void swap(int a[]) {
        int len = a.length;
        for (int i = 0; i < len / 2; i++) {
            int tmp = a[i];
            a[i] = a[len - 1 - i];
            a[len - 1 - i] = tmp;
        }
    }

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧