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"); }尝试写了一段代码,基本能实现楼主的要求,但自我感觉算法的效率偏低,期待高手带来新的算法吧。
#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