A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 610757257 中级黑马   /  2014-12-29 01:37  /  1296 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static void selectsort(int []arr)
  2.         {
  3.                 for (int x=0;x<arr.length-1;x++ )
  4.                 {
  5.                         for (int y=x+1;y<arr.length;y++ )
  6.                         {
  7.                                 if (arr[x]>arr[y])
  8.                                 {
  9.                                         swap(arr,x,y);
复制代码

我想问一下for (int x=0;x<arr.length-1;x++ ),x<arr.length-1;数组元素是:{2,4,5,7,8,2,1,}那如果x循环到第六次6<7-1,条件不满足,结束运算,那么第六位与第七位的元素怎么调换位置的??????请前辈们解答解答我这个问题....谢谢!

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

11 个回复

正序浏览
寻觅 中级黑马 2014-12-31 09:24:13
12#
x,y是数组的角标,x是从0开始的,x最大是5,对应的是第六个元素,就是倒数第二个,y是从x下一个算起,所以当x是倒数第二个时,y是最后一个,y为6,这时的比较是最后一轮,根本没有x==6的时候,你主要是忽略了角标从0开始这个小细节!
回复 使用道具 举报
李增宽 来自手机 中级黑马 2014-12-30 23:40:46
11#
一楼二楼说的好
回复 使用道具 举报
Y_木头人 来自手机 中级黑马 2014-12-30 20:12:46
10#
受教。。
回复 使用道具 举报
FINE 中级黑马 2014-12-30 10:33:32
9#
一楼回答的是正解
回复 使用道具 举报
二楼说的有理。
回复 使用道具 举报
x=5时,y=6(只能),此时比较arr[x]和arr[y]就是比较arr[5]和arr[6],又因为数组下标从零开始,所以此时比较的就是第六位和第七位元素就是
回复 使用道具 举报
最后两位已经不需要比较了
回复 使用道具 举报
最后两位已经不需要比较了
回复 使用道具 举报
dandan520 来自手机 中级黑马 2014-12-29 06:27:21
板凳
学习学习。
回复 使用道具 举报
本帖最后由 雪落纷飞 于 2014-12-29 02:40 编辑

外循环只是要比较的个数或者次数,   生活中的思想按照排序法你要比较三个数7 5 3    ,  第一遍先找一个最小的3在前面了,第二遍找到个第二小的5在第二位,剩下的那一根本不用比了。只是比较两次。       双循环外循环只是控制次数的,内循环才是实现比较方法的,选择排序外循环每循环一次最值固定前面一个,当外循环 为6内循环的比较只有6和7, 所以。。。。。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
_kirito 来自手机 中级黑马 2014-12-29 02:12:51
沙发
数组中有7个元素,长度为7,arr.length-1为6,遍历数组从0开始,外循环进行了6次,内循环在进行第六次比较的时候,也就是i为5的时候,比较的是第5角标和第6角标的元素,也就是最后两个元素。完毕

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马