本帖最后由 秋天 于 2011-11-8 16:46 编辑
按照书本打了一个冒泡程序
public class MaoPao{
public static void main(String[] args){
int[]a=new int[]{13,10,15,4,2,1,28,25,34};//创建一个整数数组a,其值是13,10,15,4,2,1,28,25,34
int i,t,j;//定义三个整型变量i,t,j.
System.out.print("排列前的数组为:");
for(i=0;i<10;i++){//使用for循环语句
System.out.print(a+" ");//输出数组a的值
}
System.out.println("");//换行
for(j=0;j<9;j++){//外层循环
for(i=0;i<9;i++){//内层循环
if(a>a[i+1]){//如果前一个数大于后一个
t=a;//将前一个元素赋值给中间变量t
a=a[i+1];//将后一个元素赋值前一个元素
a[i+1]=t;//将中间变量t赋值给后一个元素
}
}
}
System.out.print("排列后的数组为:");
for(i=0;1<10;i++){//使用for循环
System.out.print(a+" ");//输出数组a的值
}
}
}
原来少打了一个数据4现在改过来了
public class MaoPao{
public static void main(String[] args){
int[]a=new int[]{13,10,3,15,4,2,1,28,25,34};//创建一个整数数组a,其值是13,10,15,4,2,1,28,25,34
int i,t,j;//定义三个整型变量i,t,j.
System.out.print("排列前的数组为:");
for(i=0;i<10;i++){//使用for循环语句
System.out.print(a+" ");//输出数组a的值
}
System.out.println("");//换行
for(j=1;j<9;j++){//外层循环
for(i=1;i<9;i++){//内层循环
if(a>a[i+1]){//如果前一个数大于后一个
t=a;//将前一个元素赋值给中间变量t
a=a[i+1];//将后一个元素赋值前一个元素
a[i+1]=t;//将中间变量t赋值给后一个元素
}
}
}
System.out.print("排列后的数组为:");
for(i=0;1<10;i++){//使用for循环
System.out.print(a+" ");//输出数组a的值
}
}
}
运行发现第二次的数据中第一个没更改 就把
for(j=1;j<9;j++){//外层循环
for(i=1;i<9;i++){//内层循环
if(a>a[i+1]){//如果前一个数大于后一个
t=a;//将前一个元素赋值给中间变量t
a=a[i+1];//将后一个元素赋值前一个元素
a[i+1]=t;//将中间变量t赋值给后一个元素
}
改为 for(j=0;j<9;j++){//外层循环
for(i=0;i<9;i++){//内层循环
if(a>a[i+1]){//如果前一个数大于后一个
t=a;//将前一个元素赋值给中间变量t
a=a[i+1];//将后一个元素赋值前一个元素
a[i+1]=t;//将中间变量t赋值给后一个元素
}
运行之后这样了---------- java ----------
排列前的数组为:13 10 3 15 4 2 1 28 25 34
排列后的数组为:1 2 3 4 10 13 15 25 28 34 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at MaoPao.main(MaoPao.java:23)
输出完毕 (耗时 1 秒) - 正常终止
|
|