下面是我的代码。
public class MaoPao { public static void main(String[] args) {
MaoPao m = new MaoPao();
int a [] = {44,664,2222,6468,346,74,964};
int c[] = m.maopao(a);
for(int i = 0; i < c.length; i++){
System.out.println(c[i]);
}
}
public int[] maopao(int a[]){
int b[] = new int[4]; for(int j = 0; j < a.length; j++){
for(int i = 0; i < j; i++){
if(a[i] > a[i+1]){
b[1] = a[i];
a[i] = a[i+1];
a[i+1] = b[1];
}
}
}

return a;
}}
为什么不能正确排序呢。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【java_luan】截止到2008-07-15 15:53:59的历史汇总数据(不包括此帖):
    发帖的总数量:9                        发帖的总分数:320                      每贴平均分数:35                       
    回帖的总数量:24                       得分贴总数量:5                        回帖的得分率:20%                      
    结贴的总数量:7                        结贴的总分数:250                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:2                        未结的总分数:70                       
    结贴的百分比:77.78 %               结分的百分比:78.13 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主加油
      

  2.   

    第2个循环 i=j+1;i<a.length;i++
      

  3.   


        /**
         * 冒泡排序
         * @param a 目标排序集合
         * @param rule 排序规则
         * @return 有序的集合
         */
        public static int[] bubbleSort(int[] a, boolean rule)
        {
            int i, j, temp;
            boolean flag = true;
            int n = a.length;        // 升序
            if(rule)
            {
                for(i = 1; i < n && flag; i++)
                {
                    flag = false;                for(j = 0; j < n - i; j++)
                    {
                        if(a[j] > a[j + 1])
                        {
                            flag = true;
                            temp = a[j];
                            a[j] = a[j + 1];
                            a[j + 1] = temp;
                        }
                    }
                }
            }
            // 降序
            else
            {
                for(i = 1; i < n && flag; i++)
                {
                    flag = false;                for(j = 0; j < n - i; j++)
                    {
                        if(a[j] < a[j + 1])
                        {
                            flag = true;
                            temp = a[j];
                            a[j] = a[j + 1];
                            a[j + 1] = temp;
                        }
                    }
                }
            }        return a;
        }
      

  4.   

    public class MaoPao { public static void main(String[] args) {
    MaoPao m = new MaoPao();
    int a[] = { 44, 664, 2222, 6468, 346, 74, 964 };
    int c[] = m.maopao(a);
    for (int i = 0; i < c.length; i++) {
    System.out.println(c[i]);
    }
    } public int[] maopao(int a[]) {
    int temp = 0; //定义空桶
    for (int j = 0; j < a.length; j++) {
    for (int i = j+1; i < a.length; i++) {
    if (a[j]<a[i]) { //拿第一个元素与所有的对比,大的放第一个元素里,拿第二个元素对比大的放2号里,类推
    temp = a[j]; //元素的交换
    a[j]=a[i];
    a[i]=temp;
    }
    }
    } return a;
    }}你想换两桶水,需要个一个空桶,。
    10桶水,先拿第一桶跟第2,第3,....第10个比较 ,比如第3桶比第1桶重,哪么就要把两桶水交换,。交换完继续比较,总之第一桶水永远是最重的
      

  5.   

    public class Maopao{    public static void main(String[] args) {
            Maopao m = new Maopao();
            int a[] = {44, 664, 2222, 6468, 346, 74, 964};
            m.maopao(a);
            for (int i = 0; i < a.length; i++) {
                System.out.println(a[i]);
            }
        }    public void maopao(int a[]) {
            for (int i = 0; i < a.length - 1; i++) {
                for (int j = a.length - 1; j > i; j--) {
                    if (a[j] < a[j - 1]) {
                        int temp = a[j];
                        a[j] = a[j - 1];
                        a[j - 1] = temp;
                    }
                }        }
        }
    }
      

  6.   


    for(int j = 0; j < a.length - 1; j++){
        for(int i = 0; i < a.length - 1 - j; i++){
      

  7.   

    最快速的,不能比这个快了public static void maopao(int[] a){
    for(int i=0;i<a.length;i++){
    for(int j=0;j<a.length-i-1;j++){
    if(a[j]<a[j+1]){
    a[j]^=a[j+1];
    a[j+1]^=a[j];
    a[j]^=a[j+1];
    }
    }
    }
    for(int i=0;i<a.length;i++){
    print(a[i]);
    }
    }