java - 原始for循环和for each循环的区别
伊谢尔伦
伊谢尔伦 2017-04-17 14:42:09
0
1
682
public class WeightedQuickUnionUF {
	private int[] id;
	private int[] sz;
	
	public WeightedQuickUnionUF(int N){
		id = new int[N];
		sz = new int[N];
		for(int i=0;i<N;i++)
			id[i] = i;
		for(int j=0;j<N;j++)
			sz[j] = 1;
	} 
	
	public int root(int p){
		while(p != id[p])
			p = id[p];
		return p;
	}
	
	public int getid(int p){
		return id[p];
	}
	public int getsize(int p){
		return sz[p];
	}
	public void show(){
//		for(int ele:id)
//			System.out.print(id[ele]+ " ");
		for(int j=0;j<id.length;j++){
			System.out.print(id[j]+ " ");
		}
		System.out.print("\n");
	}

	public void union(int p, int q){
		int rootp = root(p);
		int rootq = root(q);
		if(sz[rootp] < sz[rootq]){
			id[rootp] = rootq;
			sz[rootq] += sz[rootp];
		}
		else{
			id[rootq] = rootp;
			sz[rootp] += sz[rootq];
		}
	}
	
	public static void main(String args[]){
		WeightedQuickUnionUF test1 = new WeightedQuickUnionUF(10);
		test1.union(6, 0);
		test1.union(1, 7);
		test1.union(7, 9);
		test1.union(8, 9);
		test1.union(8, 5);
		test1.union(4, 2);
		test1.union(9, 3);
		test1.union(4, 0);
		test1.union(3, 0);
		test1.show();
	}
}

问题主要是在show()函数那里,用两种不同的循环最终打印出来的数组是不一样的,想问下为什么会出现这种情况,谢谢大家~

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

membalas semua(1)
迷茫
    public void show(){
        for(int ele:id) {
            // System.out.print(id[ele]+ " ");
            System.out.print(ele+ " ");
        }

        // for(int j=0;j<id.length;j++){
        //     System.out.print(id[j]+ " ");
        // }
        System.out.print("\n");
    }

for(int j=0;j<id.length;j++) 里的 j 是索引,但 for(int ele:id) 里的 ele 是元素,不是索引——你名字都是取的 ele,element 的缩写哒。

如果你的 id 数组不是一个 int 类型估计你就容易理解了。

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan