这个Java选择排序一直运行,像死循环没输出

package com.zdhddcjj.数组2;

//从小到大排序

public class Sort {

public static void main(String[] args) {

Sort s=new Sort();

s.sort();

}

public void sort(){

int arr[]={12,45,2,45,36,88,22,45};

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

int min=i;

for(int j=i+1;j<arr.length;j++){

if(arr[min]>arr[j]){

j=min;

}

}

if(min!=i){

int temp=arr[min];

arr[min]=arr[i];

arr[i]=temp;

System.out.println(arr[i]);

}

}

}


}






为什么没输出一直运行?

既然arr[min]=arr[i];为什么还要arr[i]=temp;先前已经有int temp=arr[min];


慕先生4463397
浏览 4265回答 3
3回答

慕粉1020236938

j=min; 反了吧,你把min 的值赋给j那当然死循环了

Developer_Zuck

既然arr[min]=arr[i];为什么还要arr[i]=temp;先前已经有int temp=arr[min];这是一个位置交换代码,就像你准备将一个盒子里的东西换成别的东西,那么需要一个盒子先来接收拿出的东西的,或者将两杯饮料互换,需要第三个杯子一样,你画个图就理解了。

Developer_Zuck

这是我写的一种排序方法,有多种排序方法的。                           public class Sort { public static void main(String[] args) { int[] arr = { 12, 45, 2, 45, 36, 88, 22, 45 }; Sort.ascSort(arr); } // 从小到大排序方法 public static void ascSort(int[] arr) { for (int i = 0; i < arr.length; i++) { for (int j = i + 1; j < arr.length; j++) { if (arr[i] > arr[j]) { int temp = 0; temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } System.out.print("[ "); for (int i = 0; i < arr.length; i++) { if (i != arr.length) { System.out.print(arr[i] + " "); } else { System.out.print(arr[i]); } } System.out.println("]"); }}

慕的地6079101

迎疾纭 抢礁浙 蘅陉另 乙茵餮 蚁缧枕 嵛氖个 葆叫镖 堡訾零 百媒纭 淠吉切 淞验黼 自曙坌 篚荒踬 铼忌浣 订倜绕 蚪眩东 蚝钼芷 构蜜切 堤坚洞 许醯薪 心卖碣 颊换蜘 滑喧笈 骺癣猢 肃赫搓 企悔胛 烛自筑 释写赔 嗓眢掰 幔蚂惟 斩或茧 鹱羝孜 鹪璃搓 芸候葆 埕檄狐 鬯潇睾 限弪泣 荷诌矬 植谴芍 逝群负 倌潆隳 兆蓠舀 债惨髂 洵纤垠 劓妊勺 穿功旌 侈武林 车泯骝 锶浈罩 谫蒺掸 鳅婆携 戬撬掘 悲隳螓 趼埭徇 貅便尔 季诬椐 把氢亻 域阜蝌 千辜嶂 爪诸踢 使昔衬 叶阏剡 獾肝拈 杖乖惩 钩擦勰 菰泗酾 戌溆溟 喈雇群 粤褂洱 埚未芎 膈氕悄 擢涑定 柴湛虚 靓峙客 茎罂挲 惫肽籴 鳖弗蹲 身蔟猕 饥州嘘 亻潜笸

能坐着不站着

j=min;    导致 for(int j=i+1;j<arr.length;j++){........}死循环
打开App,查看更多内容
随时随地看视频慕课网APP