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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邓斌 中级黑马   /  2012-4-9 15:58  /  1894 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数组排序的一段代码。比较后。转换位置。有点弄不懂。
这段代码中。
把//注释中3个位置顺序不同先后。输出结果都不相同。。。求解在内存中变量定义以及变化的原理。比如先定义1。在定义2。或者先定义2,在定义1的区别。
  1. class Shuzu4//(排序-选择排序)
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int [] arr={1,4,3,2,6,5};
  6.                 print(arr);
  7.                 paixu(arr);
  8.                 print(arr);
  9.                
  10.         }
  11.         public static void paixu(int[] arr)
  12.         {
  13.                         for (int x=0;x<arr.length-1 ;x++ )
  14.                         {
  15.                                 for (int y=x+1;y<arr.length ;y++ )
  16.                                 {
  17.                                         if (arr[x]>arr[y])
  18.                                         {
  19.                                                 [color=Red]int temp=arr[x];//1
  20.                                                
  21.                                                  arr[y]=temp;//2
  22.                                                 arr[x]=arr[y];//3[/color]                                               

  23.                                         }
  24.                                 }

  25.                         }
  26.        
  27.        
  28.         }
  29.         public static void print(int[] arr)
  30.         {
  31.                         System.out.print("[");
  32.                         for (int x=0;x<arr.length ;x++ )
  33.                         {
  34.                                 if (x!=arr.length-1)
  35.                                 {
  36.                                         System.out.print(arr[x]+",");
  37.                                 }
  38.                                 else
  39.                                 System.out.print(arr[x]);
  40.                         }
  41.                         System.out.println("]");
  42.        
  43.         }
  44. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

5 个回复

倒序浏览
这里面有个赋值先后的问题,如果你先定义1--》定义2和先定义2再定义1这两个赋值的先后顺序都不同,所以结果当然会不同
回复 使用道具 举报
邓海涛 发表于 2012-4-9 16:04
这里面有个赋值先后的问题,如果你先定义1--》定义2和先定义2再定义1这两个赋值的先后顺序都不同,所以结果 ...

恩。朋友。这个当然知道。所以我才问的。为什么。你这不是答非所问吗。
回复 使用道具 举报
本帖最后由 翟友伟 于 2012-4-9 16:23 编辑

这个问题 画图最好理解了


你说的 第二种的  意思 我还没看懂 。。
先把temp赋值给其他对象 什么???
代码写下。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
翟友伟 发表于 2012-4-9 16:13
这个问题 画图最好理解了

OK了。。谢谢。
回复 使用道具 举报
先定义一个临时存储位置int temp;     
temp=arr[x];//1     把array[x]赋值给temp,temp占领了 array[x]的位置      
arr[x]=arr[y];//2        把array[y]赋值给array[x],array[x]占领了 array[y]的位置      
array[y]=temp  3        把temp赋值给array[y],array[y]占领了 temp的位置 ,也就是原来array[x] 的位置,实现了互换,2和3的位置不能变,还是画图比较容易理解
                        


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