【陷阱】交换排序中交换动作的陷阱

【陷阱】交换排序中交换动作的陷阱

static void swap(int[] data, int i, int j) {(data[i] != data[j]) {data[i] = data[i] ^ data[j];data[j] = data[i] ^ data[j];data[i] = data[i] ^ data[j];}}static void sort(int[] data, int begin, int end) {if (begin < end) {int cur = data[begin];int i = begin;int j = end + 1;while (true) {while (i < end && cur >= data[++i]);while (j > begin && cur <= data[–j]);if (i < j) {swap(data, i, j);} else {break;}}swap(data, begin, j);sort(data, begin, j – 1);sort(data, j + 1, end);}} main(String[] args) {int[] data = { 2, 1, 3, 8, 4, 9 };sort(data, 0, 5);System.out.println(Arrays.toString(data));}

在上述例子中有3^3的情形发生,香港服务器,网站空间,最后得出0导致排序有误。

用异或运算进行数组元素互换时记得比较连个元素值是否相等。

posted on

,香港虚拟主机爱情纯属天性,不用思考。你不能为爱而爱,

【陷阱】交换排序中交换动作的陷阱

相关文章:

你感兴趣的文章:

标签云: