3446.整数奇偶排序
⭐️难度:简单
⭐️类型:排序
📖题目:题目链接

🌟思路:考察sort函数自定义排序规则
因为自定义函数的两个参数 lhs 和 rhs 不发生交换时,才返回真 。
所以要找出 不交换的 情况:

📚题解:
cpp
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<vector> // vector不需要.h
#include<list>
#include<set> // // 可以用 set 和 multiset
#include<unordered_set> // 可以用 unordered_set 和 unordered_multimap
#include<map> // 可以用 map 和 multimap
#include<unordered_map> // 可以用 unordered_map 和 unordered_multimap
#include<algorithm>
using namespace std;
bool compare(int lhs, int rhs) {
if (lhs % 2 == 1 && rhs % 2 == 0) { // 左奇右偶,不交换
return true;
}
else if (lhs % 2 == 1 && rhs % 2 == 1 && lhs > rhs) { // 左奇右奇 且 左>右,不交换
return true;
}
else if (lhs % 2 == 0 && rhs % 2 == 0 && lhs < rhs) { // 左偶右偶 且 左<右,不交换
return true;
}
else { // 其余情况全部交换
return false;
}
}
int main() {
int arr[10];
for (int i = 0;i < 10;i++) {
scanf("%d", &arr[i]); // arr + i
}
sort(arr, arr + 10, compare);
for (int i = 0;i < 10;i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}