我正在尝试实现一个奇偶排序例程。我想我把中心思想写下来了,但有些地方不正确。

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。以后再也不会访问数组来调整数组中的值。

09-27 03:37