- public static void main(String[] args)
- {
- int[] arr = new int[] {3,2,6,11,9,1,0};
-
- System.out.print("排序之前的序列:");
- printArr(arr);
- //bubbleSort(arr);
- selectSort(arr);
- System.out.print("排序之后的序列:");
- printArr(arr);
- }
- public static void selectSort(int[] arr)
- {
- for(int x=0; x<arr.length-1; x++)
- {
- //找出最小值
- int min=x;
- for(int y=x+1; y<arr.length; y++)
- {
- if(arr[min]>arr[y])
- min=y;
-
- }
- arr[min]=arr[min]^arr[x];
- arr[x]=arr[min]^arr[x];
- arr[min]=arr[min]^arr[x];
-
-
- }
- }
复制代码 如上所示,问题出在输出结果上,排序之后发现输出为:
排序之前的序列:[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;
则无此问题
另外单独验证了,异或方式交换数据的方法结果正确,至此就十分纳闷了 不知是什么原因导致的。。
求指教 先谢过了 |