首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

冒泡排序,该怎么处理

2012-04-06 
冒泡排序冒泡排序时为什么要用两个for循环?import javax.swing.*public class Mp {public static void ma

冒泡排序
冒泡排序时为什么要用两个for循环?
import javax.swing.*;

public class Mp {
public static void main(String args[]){
int a[];
a = new int[10];
int i;
for(i=0;i<a.length;i++)
int a[i]=Integer.parseInt(JOptionPane.showInputDialog(null,"请输入初始数据"));
fun(a);
for(i=0;i<a.length;i++)
System.out.println(a[i]+"");
}  
   
}
 static void fun(int a[]){
 int j;
 for(j=0;j<a.length;j++){
for(i=0;i<a.length-1;i++){
if(a[i]>a[i+1]){
int t;
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
 }
}


[解决办法]
因为要用一个数和其他的多个数比较,所以要用到两个for循环。
[解决办法]

Java code
public class Mp {    public static void main(String args[]){//        for(int i=0;i<a.length;i++){//            a[i]=Integer.parseInt(JOptionPane.showInputDialog(null,"请输入初始数据"));//        }        int a[] = {8,2,5,6,4,1};        fun(a);        System.out.print("最后结果:");        printArray(a);            }      static void printArray(int a[]){        for(int i=0;i<a.length;i++){            System.out.print(a[i]+" ");        }        System.out.println();    }        static void fun(int a[]){        for(int j=0;j<a.length-1;j++){            for(int i=0;i<a.length-j-1;i++){                if(a[i]>a[i+1]){                    int t;                    t=a[i];                    a[i]=a[i+1];                    a[i+1]=t;                }            }            System.out.print("第"+(j+1)+"次冒泡:");            printArray(a);        }    }}第1次冒泡:2 5 6 4 1 8 第2次冒泡:2 5 4 1 6 8 第3次冒泡:2 4 1 5 6 8 第4次冒泡:2 1 4 5 6 8 第5次冒泡:1 2 4 5 6 8 最后结果:1 2 4 5 6 8
[解决办法]
因为,第一个for循环是,根据你排序数的多少控制循环的轮数,第二for循环是数据之间的相互比较。
[解决办法]
第二for循环执行一次 只是把相邻的2个数比较,然后交换位置,

如果 最小的数在最后以为, 就需要第一个for循环执行多次把他换到第一个位置,
就像毛毛虫 一拱一拱的前进
[解决办法]
探讨

Java code

public class Mp {
public static void main(String args[]){
// for(int i=0;i<a.length;i++){
// a[i]=Integer.parseInt(JOptionPane.showInputDialog(null,"请输入初始数据"));
// ……

[解决办法]
探讨

第二for循环执行一次 只是把相邻的2个数比较,然后交换位置,

如果 最小的数在最后以为, 就需要第一个for循环执行多次把他换到第一个位置,
就像毛毛虫 一拱一拱的前进

[解决办法]
for(int j=0;j<a.length-1;j++){ //这个主要是需要做多少趟冒泡,就是有多少个元素就需要做多少次
for(int i=0;i<a.length-j-1;i++){ //这个主要是比较相连元素
if(a[i]>a[i+1]){
int t;
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}

热点排行
Bad Request.