開啟章節選單
偶先排序
題目說明
排序時偶數在前,奇數在後,由大到小。
舉例
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; }