偶先排序

題目說明

排序時偶數在前,奇數在後,由大到小。

舉例

input =  3 6 4 7
output = 6 4 7 3

解題過程

首先宣告整數變數 n 並輸入,再宣告陣列 a

int n;
cin >> n;
vector<int> a(n);

輸入需排列的數字到陣列 a

for(auto &v: a) cin >> v; 

使用內建函式 sort

sort( a.begin(), a.end(), LESS);

main 函式前寫比較函式 LESS ,如果 a, b 其中一個是奇數,另一個為偶數,偶數會在前面,如果兩個都是奇數或是兩個都是偶數就比大小

int LESS(int a, int b){
	if( a % 2 != b % 2) return a % 2 == 0;
	else return a > b;
}

最後再輸出

for(auto &v : a)cout << v << ' ';

程式就完成了!
完整程式碼如下

#include <bits/stdc++.h>
using namespace std;
int LESS(int a, int b){
	if(a % 2 != b % 2)return a % 2 == 0;
	else return a > b;
}
int main() {
  int n;
  cin >> n;
  vector<int>a(n);
  for(auto &v : a)cin >> v;
  sort(a.begin(), a.end(), LESS);
  for(auto &v : a)cout << v << ' ';
  return 0;
}