题解 | #整数奇偶排序#
整数奇偶排序
https://www.nowcoder.com/practice/bbbbf26601b6402c9abfa88de5833163
#include<cstdio> #include<algorithm> using namespace std; bool cmp(int left, int right) { if (left % 2 == 1 && right % 2 == 1) { //两奇数 return left > right; } else if (left % 2 == 1 && right % 2 == 0) { //左奇右偶 return true; } else if (left % 2 == 0 && right % 2 == 1) { //左偶右奇 return false; } else { //两偶数 return left < right; } } int main() { int arr[10]; while (scanf("%d%d%d%d%d%d%d%d%d%d", &arr[0], &arr[1], &arr[2], &arr[3], &arr[4], &arr[5], &arr[6], &arr[7], &arr[8], &arr[9]) != EOF) { sort(arr, arr + 10, cmp); for (int i = 0; i < 10; i++) { printf("%d ", arr[i]); } printf("\n"); } return 0; }
想要稳定性用stable_sort()