C++一道练习题
输入10个数,将10个整数按顺序排列输出,并且奇数在前,偶数在后。如果输入的10个数是:10 9 8 7 6 5 4 3 2 1 ,则输出:1 3 5 7 9 2 4 6 8 10
程序代码:#include<cstring>
#include<iostream>
using namespace std;
void main()
{
int array[10],temparray[10],temp;
int *parray=array ;
cout<<"please input 10 numbers:"<<endl;
for(int i=0;i<10;i++)
{
cin>>array[i];
}
//将array按升序排序
for(i=1;i<10;i++)
{
for(int j=0;j<9;j++)
{
if(array[j]>=array[j+1])
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
//将排序后的array拷贝一份到temparray
for( i=0;i<10;i++)
{
temparray[i]=array[i];
}
//将奇数元素放到数组array的前面一部分
for( i=0;i<10;i++)
{
if(0!=(temparray[i]%2))
{
*parray=temparray[i];
parray++;
}
}
//将偶数元素放到数组array的后面一部分
for( i=0;i<10;i++)
{
if(0==(temparray[i]%2))
{
*parray=temparray[i];
parray++;
}
}
//输出奇偶排序后的array
for( i=0;i<10;i++)
{
cout<<"array["<<i<<"]="<<array[i]<<endl;
}
system("pause");
}
尝试写了一段代码,基本能实现楼主的要求,但自我感觉算法的效率偏低,期待高手带来新的算法吧。









