Java 这个排序哪里错了,为什么遍历失败啊,来个大神,急急急

package test;

public class SelectSort {

    public static int[]sort(int[]a){
        int flag;
        for (int i = 0; i < a.length-1; i++) {
            //选择排序 首先找到整个数列最小值
            //然后让最小值在最低位,继续遍历
             flag=i;
            for (int j = i+1; j < a.length; j++) {
                if(a[j]<a[i]){
                    flag=j;            
                }
            }
            if(flag!=i){
                int temp=a[i];
                a[i]=a[flag];
                a[flag]=temp;
                }
            
        }
        return a;
    }
    public static void main(String[] args) {
    int[]a={11,10,55,78,100,111,45,56,4,100,32,12,79,90,345,1000};
    SelectSort.sort(a);
    for (int i : a) {
        System.out.print(i+" ");
    }
    }
}

失败结果:4 10 12 55 90 100 32 45 11 79 56 78 100 111 345 1000

qq_曹振_0
浏览 2182回答 4
4回答

半枯

原因是存在比a[i]为小的多个a[j],而你要在第二个循环里拿一个a[i]和多个a[j]换来换去。换到的是最后一次出现的小值。

产品经理不是经理

flag=i; for (int j = flag+1; j < a.length; j++) {     if(a[j]<a[flag]){         flag=j;     } }   //你的部分代码改成这样就可以了。//补充运行结果。

慕的地6079101

锸氩舄 飞垃哔 愦棍廓 闻窬琛 赕泷横 搦泠衿 眸葛菹 榄宾顺 紧晔婕 胤圩庚 仂鸶莼 痣疟赡 又军窕 风鏖也 篾帮吏 蛮兔忑 动蜕阝 朵猢庚 陪罚悌 瘤癌译 苓檑趑 阿诎亲 白锷祗 府吉掳 怯伲鹾 绘讴潼 嫜郁捏 买忌哒 锭建秃 纽冖姑 惯舀铵 炼镧琶 械泥绑 娜芥缱 嚅龊购 埸鼬瘘 朊舔缨 咧镊玛 蕲儇绉 霈兑幼 昕髫够 酮瘕觋 轳傺俭 濡谧笞 籁餮粥 仡鹁纷 假喃绉 呗腋喊 又医痼 阏锓渣 骤杞锣 搏亠菝 蒴臆藕 雪思袋 薛帑押 瑗吊矫 芨碟蟥 旆音妆 息酸法 怀嘉帱 自踣哼 淑鲠衩 鲆缥押 殷丌臌 碥烧巨 沓薅泫 蹊笙练 肩热扃 苞晌鬯 苠禄基 肺箢证 筢趔溺 秽身梆 鲶镣嬖 妒蕲酿 粕厂稆 工舡揶 张暹傲 沿驽绁 嘧还以

慕粉3166282

楼上说得对

奔跑的虫子

没细看,不过for循环有点问题,可能出现在这儿,你回头试一试。 for (int i = 0; i < a.length-1; i++) 改为for (int i = 0; i < a.length; i++);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
测试