一个从小到大的排序 我打印出来不正确 但有找不出错哪里啊 ,代码如下  
public class Mianji {
public static void main(String[] args) {            int a[]=new int[9];
            int t[]=new int[1];
            a[0]=25;a[1]=32;a[2]=10;a[3]=67;a[4]=8;a[5]=33;a[6]=24;a[7]=14;a[8]=27;
            for(int i=1;i<=8;i++){
             for(int j=0;j<i;j++){
             if(a[j]>=a[j+1]){
             t[0]=a[j+1];
                 a[j+1]=a[j];
                 a[j]=t[0];}
             }
            }for(int i=0;i<=8;i++){
             System.out.println(a[i]);
            }
            
            
}}                                             

解决方案 »

  1.   

    int a[]=new int[9]; 
                int t[]=new int[1]; 
                a[0]=25;a[1]=32;a[2]=10;a[3]=67;a[4]=8;a[5]=33;a[6]=24;a[7]=14;a[8]=27; 
                for(int i=0;i <=7;i++){ //这里
                for(int j=0;j <9-i-1;j++){  //这里
                if(a[j]>=a[j+1]){ 
                t[0]=a[j+1]; 
                    a[j+1]=a[j]; 
                    a[j]=t[0];} 
                } 
                }for(int i=0;i <=8;i++){ 
                System.out.println(a[i]); 
                } 
      

  2.   


    public class Test {
    public static void main(String[] args) {         int a[]=new int[9]; 
            int t[]=new int[1]; 
            a[0]=25;a[1]=32;a[2]=10;a[3]=67;a[4]=8;a[5]=33;a[6]=24;a[7]=14;a[8]=27; 
            for(int i=0;i <=8;i++){ 
            for(int j=i;j <8;j++){ 
            if(a[i]>=a[j+1]){ 
             t[0]=a[j+1]; 
                a[j+1]=a[i]; 
                a[i]=t[0];} 
            } 
            }for(int i=0;i <=8;i++){ 
            System.out.println(a[i]); 
            } 
            
            

    }
      

  3.   

    用a[0]=25;a[1]=32;a[2]=10;三个数单步排一排就会发现不行
      

  4.   


    i<=7,我考虑过的.n个数,最多要n-1趟冒泡。
      

  5.   

    57450916java基础群,欢迎学java的进来讨论。。谢谢!
      

  6.   

    冒泡排序,思考下经过怎样一个过程,先让数组部分有序,
    然后有序部分逐渐增多,最终全部有序
    for(int i=0;i <=7;i++){ //这里
    for(int j=0;j <9-i-1;j++){  //这里当i=0时,内循环将最大一个数移动到了数组末尾,
    当i=1时,内循环将第二大的数组移动到倒数第二,
    当i=2时,内循环将第三大的数组移动到倒数第三,
    数组末端是有序的,而且有序部分逐渐增多

    最终,所有数都是有序的而lz的算法,只是将小的往前移,大的往后移,
    有序部分都是一小块,一小块,始终没有一块完全,真正有序
    25 32 10 67 8 33 24 14 27 -------------
    25 10 32 67 8 33 24 14 27 -------------
    10 25 32 67 8 33 24 14 27 -------------
    10 25 32 8 67 33 24 14 27 -------------
    10 25 8 32 33 67 24 14 27 -------------
    10 8 25 32 33 24 67 14 27 -------------
    8 10 25 32 24 33 14 67 27 -------------
    8 10 25 24 32 14 33 27 67 -------------
    不得不说,思考起来是麻烦的,逻辑上容易混了
      

  7.   


    public static void main(String[] args) {             int a[]=new int[9]; 
                int t; 
                a[0]=25;a[1]=32;a[2]=10;a[3]=67;a[4]=8;a[5]=33;a[6]=24;a[7]=14;a[8]=27; 
                for(int i=1;i <=8;i++){ 
                 for(int j=0;j <i;j++){ 
                 if(a[j]>=a[i]){ //比较的时候可以使这样的
                 t=a[j]; 
                      a[j]=a[i]; 
                     a[i]=t;
                    } 
                 } 
                }
                for(int i=0;i <=8;i++){ 
                System.out.print(a[i]+"  "); 
                }