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