编写一个程序,实现将数组a[10]中的整数序列,按照先奇数、后偶数且从小到大的顺序排序,如将4、7、8、3、5、1、2、9、6、10排序为1、3、5、7、9、2、4、6、8、10。
时间: 2024-08-12 07:09:37 浏览: 48
要实现这个功能,我们可以使用C++的STL库中的`std::sort`函数,配合自定义的比较函数(comparator)。这里,我们需要一个比较函数,该函数检查两个元素是否是奇数或偶数,然后决定它们的顺序。下面是实现的一个例子:
```cpp
#include <iostream>
#include <algorithm> // 包含sort函数
#include <vector> // 使用vector代替数组方便操作
// 定义一个比较函数,用于比较奇数和偶数
bool compare(int a, int b) {
if (a % 2 == 1 && b % 2 == 0) return true; // 先奇数
if (a % 2 == 0 && b % 2 == 1) return false; // 后偶数
// 如果都是奇数或偶数,则按值从小到大排序
return a < b;
}
int main() {
std::vector<int> a = {4, 7, 8, 3, 5, 1, 2, 9, 6, 10}; // 定义数组
std::sort(a.begin(), a.end(), compare); // 使用自定义比较函数排序
// 打印排序后的数组
for (int num : a) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
在这个程序中,我们首先创建了一个包含给定数字的`vector`。然后使用`std::sort`函数对这个向量进行排序,传入自定义的`compare`函数作为第三个参数。`compare`函数负责确定奇数和偶数的相对顺序。
阅读全文