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

© 赵国刚 中级黑马   /  2013-8-11 11:40  /  1124 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


01.public static void main(String[] args)

02.         {

03.                 int[] arr = new int[] {3,2,6,11,9,1,0};

04.                 

05.                 System.out.print("排序之前的序列:");

06.                 printArr(arr);

07.                 //bubbleSort(arr);

08.                 selectSort(arr);

09.                 System.out.print("排序之后的序列:");

10.                 printArr(arr);

11.         }

12.public static void selectSort(int[] arr)

13.         {

14.                 for(int x=0; x<arr.length-1; x++)

15.                 {

16.                         //找出最小值

17.                         int min=x;

18.                         for(int y=x+1; y<arr.length; y++)

19.                         {

20.                                 if(arr[min]>arr[y])

21.                                         min=y;

22.                                         

23.                         }

24.                                 arr[min]=arr[min]^arr[x];

25.                                 arr[x]=arr[min]^arr[x];

26.                                 arr[min]=arr[min]^arr[x];

27.                        

28.                 

29.                 }

30.         }
复制代码如上所示,问题出在输出结果上,排序之后发现输出为:
排序之前的序列:[3,2,6,11,9,1,0]
排序之后的序列:[0,1,2,3,6,0,11]
不知为啥9变成0了。。
而将上述替换方式改成
int temp=arr[min];
arr[min]=arr[x];
arr[x]=temp;
则无此问题
另外单独验证了,异或方式交换数据的方法结果正确,至此就十分纳闷了 不知是什么原因导致的。。
求指教 先谢过了

2 个回复

倒序浏览
您需要登录后才可以回帖 登录 | 加入黑马