我实现了一个算法,将数组中的所有偶数移到数组的开头,让原始数字位于数组的末尾。以下是我的程序:-
#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
。 - iammilindsizeof(arr)
返回的是数组的大小(以字节为单位),而不是元素个数。使用sizeof(arr) / sizeof(*arr)
来获取元素个数。 - Joey Adams