开发者社区> 问答> 正文

java冒牌排序? 400 报错

java冒牌排序? 400 报错

public class MaoPaoPaiXu {
    public static void main(String []args) {
        int []fl={59,60,4,5,1};
        
        for(int i=0;i<fl.length-1;i++) {
            for(int j=i+1;j<fl.length;j++) {
                if(fl[j]>fl[i]) {
                     int temp=fl[j];
                     fl[i]=fl[j];
                     fl[i]=temp;
                    
                    }
                }
            }
            for(int i=0;i<fl.length;i++) {
                System.out.print(fl[i]+"  ");
            }
        
    }
}
这个打出来是{60.60.5.5.1}但是我想要的是{60.59.5.4.1}请问哪里出错呢

展开
收起
爱吃鱼的程序员 2020-06-22 23:02:24 330 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    第二步,应该是fj=fi######第二个for循环括号里面的条件写错了######

    谢谢各位

    ######

    将你的代码稍加修改如下:

    publicclassMaoPaoPaiXu{publicstaticvoidmain(String[]args){int[]fl={59,60,4,5,1};for(inti=0;i<fl.length-1;i++){for(intj=i;j<fl.length-2;j++){if(fl[j+1]>fl[j]){inttemp=fl[j+1];fl[j+1]=fl[j];fl[j]=temp;}}}for(inti=0;i<fl.length;i++){System.out.print(fl[i]+"");}}}

    输出:60 59 5 4 1

    下面介绍一个冒泡排序的代码。它考虑的比较全面,请仔细学习。

    importjava.util.Arrays;importjava.util.Random;publicclassBubbleSort{staticvoidbubble_sort(inta[]){//起泡排序方法,将数组排序,排成递减序列inti,j,t,n=a.length;booleanswap=true;intcount=1;/*如果,某趟循环后,布尔变量swap仍然为false,则说明此趟循环,*未发生过交换。这意味着,数组已经有序,即排序操作已经完成,排序应终止。因此,布尔变量swap为true,是外层循环的一个必要条件。/for(i=n-1;i>0&&swap;--i){/每次外层循环,先设布尔变量swap为false,说明尚未发生交换/swap=false;/*Thebooleanflagremainsfalseduringthelastbobblerun,*implyingthatnoswapoccurredandthewholearrayiscompletelysorted.Inthiscaseoneshouldterminatethebubblesortprocessimmediately./for(j=0;j<i;++j)//i为外层循环的控制变量,在此用作内循环的上限。/*外层循环的控制变量i每次完成一趟循环后,递减1。用它作内循环的上限,可以终止在稳定区内做不必要的比较。//*Weusei,whichhasone_decreaseaftereachouter_forloop,astheupperlimitfortheinner_looptoavoidtheunnecessarycomparisonsmadeofthestableregion.Thestableregionisthearraysegementabovetheindexi./if(a[j]<a[j+1]){//若后边的元素比前边的大,即为逆序/则将两个记录交换/t=a[j];a[j]=a[j+1];a[j+1]=t;swap=true;/布尔变量值swap为true说明,在这一趟起泡排序中,至少发生过一次交换。//thebooleanflagistrueimplyingthatatleastaswapoccurredduringthisbobblerun/}System.out.print("The"+count+++"run:");System.out.println(Arrays.toString(a));}}publicstaticvoidmain(String[]args){int[]array=newint[15];Randomrand=newRandom();for(inti=0;i<array.length;i++)array[i]=rand.nextInt(120);System.out.print("Theoriginal:");System.out.println(Arrays.toString(array));bubble_sort(array);}}

    输出:

    Theoriginal:[113,89,105,119,84,94,35,88,35,33,72,60,119,62,42]The1run:[113,105,119,89,94,84,88,35,35,72,60,119,62,42,33]The2run:[113,119,105,94,89,88,84,35,72,60,119,62,42,35,33]The3run:[119,113,105,94,89,88,84,72,60,119,62,42,35,35,33]The4run:[119,113,105,94,89,88,84,72,119,62,60,42,35,35,33]The5run:[119,113,105,94,89,88,84,119,72,62,60,42,35,35,33]The6run:[119,113,105,94,89,88,119,84,72,62,60,42,35,35,33]The7run:[119,113,105,94,89,119,88,84,72,62,60,42,35,35,33]The8run:[119,113,105,94,119,89,88,84,72,62,60,42,35,35,33]The9run:[119,113,105,119,94,89,88,84,72,62,60,42,35,35,33]The10run:[119,113,119,105,94,89,88,84,72,62,60,42,35,35,33]The11run:[119,119,113,105,94,89,88,84,72,62,60,42,35,35,33]The12run:[119,119,113,105,94,89,88,84,72,62,60,42,35,35,33]

     

    ######你这个冒泡效率低了,不必要将已经冒号泡的冒一遍######

    冒牌排序,你是要假冒伪劣的排序算法吗?

    2020-06-22 23:02:42
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载