题解 | #整数奇偶排序#
整数奇偶排序
https://www.nowcoder.com/practice/bbbbf26601b6402c9abfa88de5833163
注意 sort函数中排序的上下限范围
- 将十个数分为前一半为奇数,后一半为偶数的形式
- 对奇数部分进行从大到小排序,对偶数部分进行从小到大排序
- 输出数组即可
#include <algorithm> #include <iostream> using namespace std; bool cmp(int x, int y){ return x>y; } int main() { int num[10]; int *p = num, *q = &num[9],temp;//p指向奇数,q指向偶数 //输入 for (int i = 0; i < 10; i++) cin >> num[i]; //将数组分为前一半为奇数,后一半为偶数的形式 while(p < q){ while (*p %2 != 0 && p < q) p++; while (*q %2 == 0 && p < q) q--; if(p < q){ temp = *p; *p = *q; *q = temp; p++; q--; } } //排序 if (*p %2 == 0){ sort(num,p,cmp); } else sort(num,p+1,cmp); if (*q %2 == 0) sort(q,num+10); else sort(q+1,num+10); //输出 for (int i = 0; i < 10; i++) cout << num[i]<<" "; } // 64 位输出请用 printf("%lld")