整数奇偶数排序c++
整数奇偶数排序题目例:代码解析sort函数题目给定10个整数的序列,要求对其重新排序。排序要求:1.奇数在前,偶数在后;2.奇数按从大到小排序;3.偶数按从小到大排序。输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于100。按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。例:代码#include <iostream>#incl
·
题目
给定10个整数的序列,要求对其重新排序。
排序要求:
1.奇数在前,偶数在后;
2.奇数按从大到小排序;
3.偶数按从小到大排序。
输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于100。
按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。
例:
代码
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int cmp(int,int);
int s[1000];
int main()
{
int b,i,j,k=0;
for(i=0;i<10;i++)
{
cin>>s[i];
}
for(j=0;j<10;j++)
{
if(s[j]%2!=0) swap(s[j],s[k]),k++;
}
// cout<<k<<endl;
// cout<<s<<" "<<s+k<<endl;
// cout<<s[0]<<" "<<s[k]<<endl;
sort(s,s+k,cmp);//s为首地址,第三个参数为从大到小排
sort(s+k,s+10);//s+10为末尾地址 ,默认从小到大
for(b=0;b<10;b++)
{
cout<<s[b]<<" ";
}
}
int cmp(int x,int y)
{
return x>y;
}
解析
经过k次交换,使所有的奇数全部放在偶数的前面。
注意: 此时的奇数仍然是未排序
sort(s,s+k,cmp);执行后 前面的奇数从大到小排列
sort(s+k,s+10); 执行后 后面的偶数从小到大排列
cout<<k<<endl;//为理解题目所用的代码,此代码块不参与题解中
cout<<s<<" "<<s+k<<endl;
cout<<s[0]<<" "<<s[k]<<endl;
sort函数
链接: 点击链接转自其他博客的详细解释.
更多推荐
已为社区贡献2条内容
所有评论(0)