package test;public class SelectSort {?? ?public static int[]sort(int[]a){?? ??? ?int flag;?? ??? ?for (int i = 0; i < a.length-1; i++) {?? ??? ??? ?//選擇排序 首先找到整個(gè)數(shù)列最小值?? ??? ??? ?//然后讓最小值在最低位,繼續(xù)遍歷?? ??? ??? ? 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+" ");?? ?}?? ?}}失敗結(jié)果:4 10 12 55 90 100 32 45 11 79 56 78 100 111 345 1000
4 回答
已采納

半枯
TA貢獻(xiàn)101條經(jīng)驗(yàn) 獲得超45個(gè)贊
原因是存在比a[i]為小的多個(gè)a[j],而你要在第二個(gè)循環(huán)里拿一個(gè)a[i]和多個(gè)a[j]換來換去。換到的是最后一次出現(xiàn)的小值。

產(chǎn)品經(jīng)理不是經(jīng)理
TA貢獻(xiàn)481條經(jīng)驗(yàn) 獲得超143個(gè)贊
flag=i; for?(int?j?=?flag+1;?j?<?a.length;?j++)?{ ????if(a[j]<a[flag]){ ????????flag=j; ????} }?? //你的部分代碼改成這樣就可以了。
//補(bǔ)充運(yùn)行結(jié)果。
點(diǎn)擊展開后面1條

慕的地6079101
TA貢獻(xiàn)3593條經(jīng)驗(yàn) 獲得超0個(gè)贊
鍤氬舄
飛垃嗶
憒棍廓
聞窬琛
賧瀧橫
搦泠衿
眸葛菹
欖賓順
緊曄婕
胤圩庚
仂鷥莼
痣瘧贍
又軍窕
風(fēng)鏖也
篾幫吏
蠻兔忑
動(dòng)蛻阝
朵猢庚
陪罰悌
瘤癌譯
苓檑趑
阿詘親
白鍔祗
府吉擄
怯伲鹺
繪謳潼
嫜郁捏
買忌噠
錠建禿
紐冖姑
慣舀銨
煉鑭琶
械泥綁
娜芥繾
嚅齪購
埸鼬瘺
朊舔纓
咧鑷瑪
蘄儇縐
霈兌幼
昕髫夠
酮瘕覡
轤傺儉
濡謐笞
籟餮粥
仡鵓紛
假喃縐
唄腋喊
又醫(yī)痼
閼鋟渣
驟杞鑼
搏亠菝
蒴臆藕
雪思袋
薛帑押
瑗吊矯
芨碟蟥
旆音妝
息酸法
懷嘉幬
自踣哼
淑鯁衩
鲆縹押
殷丌臌
碥燒巨
沓薅泫
蹊笙練
肩熱扃
苞晌鬯
苠祿基
肺箢證
筢趔溺
穢身梆
鯰鐐嬖
妒蘄釀
粕廠稆
工舡揶
張暹傲
沿駑紲
嘧還以

奔跑的蟲子
TA貢獻(xiàn)33條經(jīng)驗(yàn) 獲得超21個(gè)贊
沒細(xì)看,不過for循環(huán)有點(diǎn)問題,可能出現(xiàn)在這兒,你回頭試一試。
for (int i = 0; i < a.length-1; i++)
改為for (int i = 0; i < a.length; i++);
添加回答
舉報(bào)
0/150
提交
取消