一个冒泡排序的问题
程序代码:
int[] a={1,3,9,5,7,};
int t;
int f=0;//用F来判断循环是否继续
for(int x=0;x<a.length;x++){
System.out.println();
System.out.print((x+1)+":"+" "+"f: "+f+" |");
for(int i=0;i<a.length-1;i++){
if(a[i]>a[i+1]){
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
for(int y:a){
System.out.print(y+" ");
}
}
结果是:int t;
int f=0;//用F来判断循环是否继续
for(int x=0;x<a.length;x++){
System.out.println();
System.out.print((x+1)+":"+" "+"f: "+f+" |");
for(int i=0;i<a.length-1;i++){
if(a[i]>a[i+1]){
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
for(int y:a){
System.out.print(y+" ");
}
}
1: f: 0 |1 3 5 7 9
2: f: 0 |1 3 5 7 9
3: f: 0 |1 3 5 7 9
4: f: 0 |1 3 5 7 9
5: f: 0 |1 3 5 7 9
---------------------
第一次循环就能看出 已经排序完了。但是继续循环了4次
那么 怎么用F来中断循环呢?
----------------解决方案--------------------------------------------------------
程序代码:
public static void main(String[] args) {
int[] a={1,3,10,9,5,7};
int t;
int f;
for(int x=0;x<a.length;x++){
f=0;
System.out.println();
for(int i=0;i<a.length-1;i++){
if(a[i]>a[i+1]){
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
f=1;
}
}
System.out.print((x+1)+":"+" "+"f: "+f+" |");
if(f==0)break;
for(int y:a){
System.out.print(y+" ");
}
}
//输出
System.out.println("");
System.out.println("排序结果:");
for(int j=0;j<a.length;j++){
System.out.print(a[j]+" ");
}
}
}
解决了 int[] a={1,3,10,9,5,7};
int t;
int f;
for(int x=0;x<a.length;x++){
f=0;
System.out.println();
for(int i=0;i<a.length-1;i++){
if(a[i]>a[i+1]){
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
f=1;
}
}
System.out.print((x+1)+":"+" "+"f: "+f+" |");
if(f==0)break;
for(int y:a){
System.out.print(y+" ");
}
}
//输出
System.out.println("");
System.out.println("排序结果:");
for(int j=0;j<a.length;j++){
System.out.print(a[j]+" ");
}
}
}
----------------解决方案--------------------------------------------------------
楼上的应该可以了..........
----------------解决方案--------------------------------------------------------
你的f没有进入循环啊
----------------解决方案--------------------------------------------------------