写的一个冒泡排序,不知道哪里出了问题了,求指教package sz;
import java.io.*;public class sz {
public static void main(String[] args) {
int a[]={1,3,25,34,15,44,22,5,9,0};
System.out.println("排序结果为:");
Bouble(a);     
}
static void Bouble(int a[]){
int i,j,temp;
for(j=0;j<a.length-2;j++){
for(i=0;i<a.length-j;i++){
if(a[i]>a[i+1]){
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
for(i=0;i<a.length;i++)
System.out.println(a[i]);
}

}

解决方案 »

  1.   

    这应该是冒泡排序吧?
    我感觉你还是逻辑没理明白
     for(i=0;i<a.length-j;i++){                 if(a[i]>a[i+1]){                     temp=a[i];                     a[i]=a[i+1];                     a[i+1]=temp;                     }             } 
    这一块的代码逻辑上有点问题。
    应该是先遍历10个,求出最大的排在第一位,
    然后从第二个开始,遍历9个,求出最大的排在第二位,
    依次类推。
    等我10分钟,帮你调出来
      

  2.   

    你看下你的代码,数组越界。。你把第二个循环的i<a.length-j;改为i<a.length-j-1;就可以了
      

  3.   


    public class Test1 {
    public static void main(String[] args) { 
    int a[]={1,3,25,34,15,44,22,5,9,0};     
    System.out.println("排序结果为:");    
    Bouble(a); 
    }
    static void Bouble(int a[]){        
    int i,j,temp = 0;
    for(j=0;j<10;j++){


    for(i=j;i<a.length;i++){
    if(a[i]>a[j]){
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
    }

    }
    //System.out.println("本次循环最大数为"+a[j]);
    }
    for(int k=0;k<a.length;k++){
    System.out.println(a[k]);
    }
    }
    }
      

  4.   

     for(j=0;j<a.length-2;j++){
    改成: 
     for(j=0;j<a.length-1;j++){ 
    就可以了
    你的思路是最大的放后面,我求的是最大数放前面,思路不一样。
      

  5.   

    for(j=0;j<a.length-1;j++){
       for(i=0;i<a.length-j-1;i++){ 第一个循环的终止条件 a.length-1
    第二个 a.length-j-1
      

  6.   

    package Other;public class Test1 {
     
     
        public static void main(String[] args) {
            int a[]={1,3,25,34,15,44,22,5,9,0};
            System.out.println("排序结果为:");
            Bouble(a);
     
              
            }
        static void Bouble(int a[]){
            int i,j,temp;
            //j代表第几次循环,总共需要循环次数为a.length-1;
            //i代表本次循环的元素下标,然后和相邻的下一个(i+1)元素比较,
                    //所以i<a.length-j
            for(j=1;j<a.length;j++){
                for(i=0;i<a.length-j;i++){
                    if(a[i]>a[i+1]){
                     //如果第i个元素大于第(i+1)个元素,交换位置;
                        temp=a[i];
                        a[i]=a[i+1];
                        a[i+1]=temp;
                        }
                }
            }
            for(i=0;i<a.length;i++)
            System.out.println(a[i]);
        }
     
         
         
    }
    没太看明白你的代码是什么意思。
    建议你加上注释,自己再认真思考一遍,,,,
    不要凭感觉背代码。。