帮下忙 找下错哪里了

时间:2022-04-30 19:12:14
一个从小到大的排序 我打印出来不正确 但有找不出错哪里啊 ,代码如下  
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]);
            }
            
            
}

}                                             

11 个解决方案

#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


谢了 不过我自己想想我写的似乎也能排出来,但结果是不行的

#4


引用 3 楼 yy357510564 的回复:
谢了 不过我自己想想我写的似乎也能排出来,但结果是不行的

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

#5


回去巴拉巴拉数据结构吧~~~~

#6


你看看一楼的好好想想,但是第一个应该是<=8;
数组下标从0开始
很基础的啊

#7


引用 6 楼 wangxf_8341 的回复:
你看看一楼的好好想想,但是第一个应该是 <=8;
数组下标从0开始
很基础的啊


i<=7,我考虑过的.

n个数,最多要n-1趟冒泡。

#8


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

#9


冒泡排序,思考下经过怎样一个过程,先让数组部分有序,
然后有序部分逐渐增多,最终全部有序
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 -------------
不得不说,思考起来是麻烦的,逻辑上容易混了

#10


上网找下冒泡排序的算法看看。

#11



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]+"  "); 
            } 

#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


谢了 不过我自己想想我写的似乎也能排出来,但结果是不行的

#4


引用 3 楼 yy357510564 的回复:
谢了 不过我自己想想我写的似乎也能排出来,但结果是不行的

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

#5


回去巴拉巴拉数据结构吧~~~~

#6


你看看一楼的好好想想,但是第一个应该是<=8;
数组下标从0开始
很基础的啊

#7


引用 6 楼 wangxf_8341 的回复:
你看看一楼的好好想想,但是第一个应该是 <=8;
数组下标从0开始
很基础的啊


i<=7,我考虑过的.

n个数,最多要n-1趟冒泡。

#8


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

#9


冒泡排序,思考下经过怎样一个过程,先让数组部分有序,
然后有序部分逐渐增多,最终全部有序
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 -------------
不得不说,思考起来是麻烦的,逻辑上容易混了

#10


上网找下冒泡排序的算法看看。

#11



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]+"  "); 
            }