为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕先生4463397 2017-10-11 16:33:35
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];
查看完整描述

3 回答

已采纳
?
慕粉1020236938

TA贡献2条经验 获得超2个赞

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

查看完整回答
1 反对 回复 2017-10-12
  • 慕粉1020236938
    慕粉1020236938
    还有后面的的两个arr(i)应该是arr (j)吧。。不要记代码,要理解
?
Developer_Zuck

TA贡献112条经验 获得超42个赞

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

这是一个位置交换代码,就像你准备将一个盒子里的东西换成别的东西,那么需要一个盒子先来接收拿出的东西的,或者将两杯饮料互换,需要第三个杯子一样,你画个图就理解了。

查看完整回答
1 反对 回复 2017-10-11
?
Developer_Zuck

TA贡献112条经验 获得超42个赞

这是我写的一种排序方法,有多种排序方法的。//img2.sycdn.imooc.com/59ddfa7900016deb04950246.jpg                           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("]");


}

}


查看完整回答
1 反对 回复 2017-10-11
?
能坐着不站着

TA贡献1条经验 获得超0个赞

j=min;    导致 for(int j=i+1;j<arr.length;j++){........}死循环

查看完整回答
反对 回复 2017-10-12
  • 3 回答
  • 1 关注
  • 4265 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信