我正在尝试实现一个奇偶排序例程。我想我把中心思想写下来了,但有些地方不正确。
int odd = 1;
int even = 0;
do {
for (odd; odd < size-1; odd += 2) {
if (unsorted[odd] > unsorted[odd + 1])
swap(&unsorted[odd], &unsorted[odd + 1]);
}
for (even; even < size-1; even += 2) {
if (unsorted[even] > unsorted[even + 1])
swap(&unsorted[even], &unsorted[even + 1]);
}
} while (unsorted[odd] > unsorted[odd + 1] && unsorted[even] > unsorted[even +1]);
我最初认为我的错误是在while条件下,但即使我在do循环上迭代数十万次,未排序的数组也不会被排序。有人知道我哪里出错了吗?
最佳答案
我认为迪帕克是对的。而且,我在while中的条件在第一次运行之后应该是错误的
unsorted[odd] > unsorted[odd + 1] && unsorted[even] > unsorted[even +1]
当您运行for循环以确保它们不会发生时,两者都应该为false。以后再也不会访问数组来调整数组中的值。