对于外重循环,我感觉没有跟存在都能得出从小到大排序啊,但是外重循环的意义在什么地方,外重循环是否需要

对于外重循环,我感觉没有跟存在都能得出从小到大排序啊,但是外重循环的意义在什么地方,外重循环是否需要

public static void main(String[] args) {

System.out.println("请输入三个整数");

int z=new Scanner(System.in).nextInt();

int b=new Scanner(System.in).nextInt();

int c=new Scanner(System.in).nextInt();

int []a= {z,b,c};

for(int m:a) {

System.out.println("输入之前的数为"+m);

 

}

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

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

if(a[j]>a[j+1]) {

int lemp=a[j];

a[j]=a[j+1];

a[j+1]=lemp;  

}

 

}

 

}

for(int m:a) {

 

System.out.print("输入之后的数为"+m);

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 }

}



正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,外层循环控制循环遍历的次数。比如说对3,2,1进行排序。

外层循环是for(int i = 0;i<a.length-1;i++)。

当i=0时,内层循环for(int j=0;j<a.length-i-1;j++)遍历排序,此时的j的值为2。

    当j =0时,3和2比较,3比2大,交换位置,顺序是2,3,1.

    当j=1时,3和1比较,3比1大,交换位置,顺序是2,1,3.

如果没有外层循环,此时内层循环结束,比较结果是2,3,1,不符合排序结果。

所以外层循环必须有。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

苍星乱舞 2020-05-19 12:47:33

可以?那会颠覆我的认知,我希望你是错的

5个数字 :5    4     3    2    1

第一次交换:4    5    3    2    1

第二次交换:4    3    5    2    1

第三次交换:4    3    2    5    1

第四次交换:4    3    2    1    5

到这就结束了,一层循环只能做到这样,

三个数也是:3     2    1

一层循环以后:2    1    3

有点像一间教室让得分高的依次出来

你挨个问遍学生,这属于重复的事情,这要循环

但每次你只让现存教室里的学生得分最高的出了教室

你要找第二个人,还是要进教室再挨个问一下学生,找到现存教室里得分最高的

你有两件要重复的事情,挨个问学生成绩,进教室找一个人

每问一圈学生,出来一个人

秒针每走完一圈,分针走一格

秒针走完5圈,分针走5格

秒针是循环,分针也是循环

苍星乱舞 2020-05-19 09:52:40

你才三个数字排序

极端情况如果只有一个数,你甚至连内层循环都不需要,因为一个数本来就是有序的

如果是两个数,只用一层循环走一次,也能有序

三个数,就已经需要两层了,

你输入   3,2,1  试一下只用一层可以排好序吗?

  • 提问者 qq_慕姐5131252 #1
    可以的,并且成功了
    2020-05-19 10:38:48
  • 提问者 qq_慕姐5131252 #2
    我就不了解一个外重循环为什么要存在,在我的角度看来,内重循环两两互换位置即可,但是为什么要走几遍我就很不解,我也不知外重循环的作用和意义在哪里
    2020-05-19 10:44:59
  • 提问者 qq_慕姐5131252 #3
    如果是外重循环是为了两两比较并且把小的放在左边,我想知道它的原理是什么,是怎么运行的能放在左边
    2020-05-19 10:47:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师