【发布时间】:2012-01-20 20:15:20
【问题描述】:
我已经实现了一种算法来更改数组,以便将所有偶数移到数组的开头,将旧数字移到数组的末尾。这是我的程序:-
#include <iostream>
using namespace std;
void print(int arr[], int size) {
for(int i=0;i<size;i++) {
cout<<arr[i]<<" ";
}
cout<<endl;
}
void segregate(int arr[], int size) {
int l=0, h=size-1;
while(l<h) {
while(!(arr[l]%2) && l<size) {
l++;
}
while((arr[h]%2) && h >=0) {
h--;
}
swap(arr[l], arr[h]);
}
}
int main() {
int arr[] = {1,2,3,4,5,6,7,8,9};
int size = 9;
print(arr,size);
segregate(arr,size);
print(arr,size);
return 0;
}
我没有得到预期的结果
1 2 3 4 5 6 7 8 9
8 2 6 5 4 3 7 1 9
我错过了什么?
【问题讨论】:
-
建议:使用
sizeof(arr)查找数组的size。 -
请注意,
sizeof(arr)以 bytes 为单位返回数组的大小,而不是以元素为单位。使用sizeof(arr) / sizeof(*arr)获取元素个数。