【发布时间】:2019-10-12 23:46:02
【问题描述】:
我对编程并不陌生,我需要通过调用一个函数来对一个整数数组进行排序,方法是让左侧的所有奇数和右侧的偶数。
这是我的代码。
#include <iostream>
void sortOdd(int arr[], int size) {
int odd = 0;
int even = size - 1;
while (even > odd) {
int temp;
while(arr[odd] % 2 != 0) {
odd++;
}
while(arr[even] % 2 == 0) {
even--;
}
temp = arr[odd];
arr[odd] = arr[even];
arr[even] = temp;
odd++;
even--;
}
}
int main () {
int arr[] = {1, 2, 3, 4, 5, 6};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "unsorted array" << endl;
for (int i = 0; i < size; i++) cout << arr[i] << " ";
sortOdd(arr, size);
cout << "sorted array" << endl;
for (int i = 0; i < size; i++) cout << arr[i] << " ";
return 0;
}
问题是它只排序/交换外部元素而不是中间元素,它输出如下内容:
unsorted array
1 2 3 4 5 6
sorted array
1 5 4 3 2 6
有人可以帮助我在这里做错了什么吗?
谢谢。
【问题讨论】:
-
std::partition。这就是您正在寻找的功能。
标签: c++ arrays algorithm sorting