利用定义compare函数来实现复杂的排序算法
#include<iostream>
#include<algorithm>
using namespace std;
bool comp(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];
while (cin >> arr[0] >> arr[1] >> arr[2] >> arr[3] >> arr[4] >> arr[5] >> arr[6] >> arr[7] >> arr[8] >> arr[9])
{
sort(arr,arr + 10,comp); //comp这个函数不需要写括号(函数指针原理)
for (int i = 0; i < 10; i++)
{
if(arr[i] % 2 == 1)
cout << arr[i] << ' ';
}
for (int i = 0; i < 10; i++)
{
if (arr[i] % 2 == 0)
cout << arr[i] << ' ';
}
}
}