[C] 纯文本查看 复制代码 #include <stdio.h>
#define _XOR_SWAP(a, b) \
(a) = (a) ^ (b); \
(b) = (b) ^ (a); \
(a) = (a) ^ (b)
void sort(int *arr, int size) {
int half = size >> 1;
int i, offset;
for (i = 1; i < half; i += 2) {
offset = half + i;
_XOR_SWAP(arr[i], arr[offset]);
}
}
int main(int argc, char **argv) {
int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
sort(arr, 10);
for (int i = 0; i < 10; i++)
printf("%d, ", arr[i]);
printf("\n");
return 0;
}
最终输出0, 6, 2, 8, 4, 5, 1, 7, 3, 9
|