异度部落格

学习是一种生活态度。

0%

【IT笔试面试题整理】调整数组顺序使得奇数位于偶数前面

【试题描述】 输入一个整数数组,实现一个函数来调整该数组中数字的顺序。使得所有奇数位于数组的前半部分,所有偶数位于数组后半部分。

【试题来源】未知

【参考代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
using namespace std;

void reorder(int* data, int length) {

int i = 0;
int j = length - 1;

while(i < j) {
while(i < j && (data[i] & 1)) {
i++;
}

while(i < j && !(data[j] & 1)) {
j--;
}

if(i < j) {
int tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}
}
}

int main() {
int data[] = {1,2,3,4,5,6,7,8,9,10};
int length = 10;
reorder(data, length);

for(int i = 0; i < length; i++) {
cout << data[i] << " ";
}

return 0;
}