选择排序算法中的交换数值问题

来源:互联网 发布:人工智能豆瓣 编辑:程序博客网 时间:2024/05/22 01:52

交换数值我们一般用异或。在选择排序中,我们一般假设第一个数为最小值,然后与后面的真正最小值交换。但是如果后面没有找到比第一个数还要小的,而你任然执行交换的话,如果用temp变量是可行的。但是用异或的话,自己异或自己变为0了。然后这个数值就成为0了。引起数据错误。

//选择排序public static void selectSort(int arr[],int n){for(int out=0;out<n-1;out++){int min=out;for(int in=out+1;in<n;in++){if(arr[in]<arr[min]) {min=in;}}//出现错误,如果min就是out的话,就会自己异或自己,然后等于0了,应该判断if(min!=out){arr[min]=arr[min]^arr[out];arr[out]=arr[min]^arr[out];arr[min]=arr[min]^arr[out];}}}


0 0
原创粉丝点击