51,411
社区成员
发帖
与我相关
我的任务
分享public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = { 5555, 85, 65, 78, 4, 54, 1, 8, 48, 5 };
int i = 0;
int n = 0;
// int i;
// int n;
int num = 0;
for (; i < arr.length; i++) {
System.out.println("==i==" + i + "====");
for (; n < arr.length - 1 - i; n++) {
System.out.println("===n==" + n + "====");
if (arr[n] > arr[n + 1]) {
num = arr[n];
arr[n] = arr[n + 1];
arr[n + 1] = num;
}
}
}
for (int m = 0; m < arr.length; m++) {
System.out.println(arr[m] + "");
}
}
}
如果放在外面定义并赋值,以下是打印信息
==i==0====
===n==0====
===n==1====
===n==2====
===n==3====
===n==4====
===n==5====
===n==6====
===n==7====
===n==8====
==i==1====
==i==2====
==i==3====
==i==4====
==i==5====
==i==6====
==i==7====
==i==8====
==i==9====
当i=0,第一次遍历没有问题,但是记住当i=1时,此时因为n不是局部变量,而且你在函数内并没有重新赋值,所以此时n=8,此时进入不了for (; n < arr.length - 1 - i; n++) 这层循环遍历,所以相当于总共值进行了一次排序,所以不对。
package com.js.prdt.filter;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = { 5555, 85, 65, 78, 4, 54, 1, 8, 48, 5 };
int i;
int n;
int num = 0;
for (i = 0; i < arr.length; i++) {
System.out.println("==i==" + i + "====");
for (n = 0; n < arr.length - 1 - i; n++) {
System.out.println("===n==" + n + "====");
if (arr[n] > arr[n + 1]) {
num = arr[n];
arr[n] = arr[n + 1];
arr[n + 1] = num;
}
}
}
for (int m = 0; m < arr.length; m++) {
System.out.println(arr[m] + "");
}
}
}
第二种情况,见打印
==i==0====
===n==0====
===n==1====
===n==2====
===n==3====
===n==4====
===n==5====
===n==6====
===n==7====
===n==8====
==i==1====
===n==0====
===n==1====
===n==2====
===n==3====
===n==4====
===n==5====
===n==6====
===n==7====
==i==2====
===n==0====
===n==1====
===n==2====
===n==3====
===n==4====
===n==5====
===n==6====
==i==3====
===n==0====
===n==1====
===n==2====
===n==3====
===n==4====
===n==5====
==i==4====
===n==0====
===n==1====
===n==2====
===n==3====
===n==4====
==i==5====
===n==0====
===n==1====
===n==2====
===n==3====
==i==6====
===n==0====
===n==1====
===n==2====
==i==7====
===n==0====
===n==1====
==i==8====
===n==0====
==i==9====
一看打印信息你就应该知道了,因为n重新赋值了,赋值为0,所以没有问题,两层循环排序,没有问题。