C++一道练习题
输入10个数,将10个整数按顺序排列输出,并且奇数在前,偶数在后。如果输入的10个数是:10 9 8 7 6 5 4 3 2 1 ,则输出:1 3 5 7 9 2 4 6 8 10
2011-05-25 22:07
程序代码:#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");
}
尝试写了一段代码,基本能实现楼主的要求,但自我感觉算法的效率偏低,期待高手带来新的算法吧。
2011-05-25 23:49
程序代码:#include <IOSTREAM>
using namespace std;
#include <algorithm>
int main()
{
int num[10],temp[10],j=0;
for(int i=0;i<10;i++)
cin>>num[i];
sort(num,num+10);
for (i=0;i<10;i++)
{
if (num[i]%2==1)
{
temp[j++]=num[i];
}
}
for (i=0;i<10;i++)
{
if (num[i]%2==0)
{
temp[j++]=num[i];
}
}
for (i=0;i<10;i++)
{
cout<<temp[i]<<" ";
}
}用sort
2011-05-26 07:35
2011-05-26 08:24
2011-05-26 08:54

2011-05-26 13:15