openjudge整数奇偶数排序问题,一直是wrong answer,不知问题在哪里

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openjudge整数奇偶数排序问题,一直是wrong answer,不知问题在哪里相关的知识,希望对你有一定的参考价值。

输入10个整数,彼此以空格分隔
重新排序以后输出(也按空格分隔),要求:
1.先输出其中的奇数,并按从大到小排列;
2.然后输出其中的偶数,并按从小到大排列。
输入:任意排序的10个整数(0~100),彼此以空格分隔
输出:按照要求排序后输出,由空格分隔

#include<iostream>
using namespace std;
void swap(int a[],int i,int j)

int temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;

int main()

int a[10],i,j,k,temp;
while(cin.eof()!=1)

for(i=0;i<10;i++)
cin>>a[i];
i=0;
j=9;
while(i<j)

while(a[i]%2!=0) i++;
while(a[j]%2==0) j--;
if(i<=j) swap(a,i,j);

if(a[i]%2==0) i--;
for(j=0;j<i;j++)

temp=j;
for(k=j+1;k<=i;k++)

if(a[k]>a[temp])
temp=k;

if(temp!=j) swap(a,j,temp);

for(j=i+1;j<9;j++)

temp=j;
for(k=j+1;k<=9;k++)

if(a[k]<a[temp])
temp=k;

if(temp!=j) swap(a,j,temp);

for(i=0;i<=8;i++)
cout<<a[i]<<" ";
cout<<a[9]<<endl;

return 0;

参考技术A 这个题目要求很简单1)输入并排序
2先奇后偶输出,奇由大到小偶由小到大
显然,排序和奇倘无关输出时先奇,后偶
输入时就进行插入排序(降序)输入完成排序结束,输出时第一遍从0~n-1是奇数就输出,第二遍从n-1到0是偶数就输出!完全合乎题意!
若要分别排序奇左,偶在右分别插入并在插入过程中排序即可(奇降序,偶升序)输出时直接输出就是了!何必这么麻烦!!追问

这个我知道,我就想知道上面的程序到底问题在哪里

追答

while(cin.eof()!=1) 改成 while(!cin.eof())就可以了!
bool 型,和整型比较 虽然可以,难免会有警告的!!!!!

参考技术B 没用编译器,我读了你的代码,谈谈我的看法

1.首先关于你问的为什么是WA,我认为是你排序的时候 只考虑了0~i-1和i+1~8,i你没排序
2.从你的代码结构,可以看出你应该是懂得快速排序的中心思想的,那么为什么不试试用快速排序直接处理呢?

以上是关于openjudge整数奇偶数排序问题,一直是wrong answer,不知问题在哪里的主要内容,如果未能解决你的问题,请参考以下文章

openjudge 角谷猜想

Openjudge 1.10 简单排序

OpenJudge9272DP偶数个数字3

1117.整数奇偶排序

力扣——按奇偶排序数组 II

922. 按奇偶排序数组 II