【发布时间】:2017-09-17 05:06:18
【问题描述】:
我试图在一个数组中分离奇数和偶数。但是,它似乎不起作用。到目前为止,这是我编写函数的方法。只有当我输入偶数个输入时它才有效。例如,如果我输入 {1,2,3,4,5,6} 作为输入,那么它会给我 {1,5,3,6,2,4} 作为输出,但是如果我给奇数个输入,那么它给我一些随机输出。代码有什么问题?
edit1 : 我是 C++ 初学者。
void segregateEvenOdd() {
for (int i = 0; i < endofarray; i++){
int temp;
if (array[i] % 2 == 0) //check if the number is odd or even
temp = array[i];
for(int j = i; j <= endofarray; j++){ //start from 1 cuz we dont want to touch the numbers that are already segregated
array[j] = array[j+1];
}
array[endofarray] = temp;
}
}
【问题讨论】:
-
<= endofarray肯定不好。此外,假设外部循环索引告诉您遇到了多少奇数。 -
您查看过右侧的“相关”列表吗?看起来this question 也在问类似的问题。
-
如何在数组的一侧放置满足特定条件的数字"?除了使用
std::partition或stable_partition之外的任何答案都是针对限制性的学校作业。甚至这些功能的名称都说明了它们的作用,而它们的作用正是您要解决的问题。