如何使用C++实现一个函数,将一串数字按照从小到大排序,同时满足偶数在前、奇数在后的顺序?
时间: 2024-09-29 22:05:46 浏览: 38
在C++中,你可以使用STL库提供的`sort`算法,并自定义比较函数来达到这个目的。首先,你需要一个容器(如vector或list)来存储数字。这里是一个示例,展示如何创建一个名为`customSort`的函数,它接受一个整数向量并返回一个新的已排序的向量:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
bool isEven(int num) {
return num % 2 == 0;
}
bool compareNumbers(const int& a, const int& b) {
if (isEven(a) && !isEven(b)) {
return true; // 偶数优先
} else if (!isEven(a) && isEven(b)) {
return false; // 奇数优先
}
return a < b; // 如果都是偶数或都是奇数,按数值大小排序
}
std::vector<int> customSort(std::vector<int>& nums) {
std::vector<int> sortedNums = nums;
std::sort(sortedNums.begin(), sortedNums.end(), compareNumbers);
return sortedNums;
}
int main() {
std::vector<int> numbers = {5, 2, 9, 4, 7};
std::vector<int> sorted = customSort(numbers);
for (const auto& num : sorted) {
std::cout << num << " ";
}
return 0;
}
```
在这个例子中,`compareNumbers`函数负责定义元素间的比较规则。当遇到一个偶数和一个奇数时,它会先让偶数排在前面;如果都相同,再按照数值大小进行排序。
阅读全文