注意 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")

京公网安备 11010502036488号