现在对每个数的各个位数加起来的和从小到大排列
然后再把排列后的顺序按原数组值输出
比如a[]={46,22,15}
输出的是:22 15 46
我想了一个方法,但感觉效率不好,有没有更简洁的方法呢
大家一起讨论下吧
#include<stdlib.h>
#include<iostream>
using namespace std;
int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}
int convert(int tem)
{
int sum=0;
while(tem)
{
sum=sum+tem%10;
tem=tem/10;
}
return sum;
}
int main()
{
int num[3]={ 193, 392, 24};
int b[3]={0};
int c[3]={0};
int i,j;
for(i=0;i<3;i++)
cout<<num[i]<<" ";
cout<<endl;
for(i=0;i<3;i++)
{
b[i]=convert(num[i]);
c[i]=convert(num[i]);
}
qsort(c,3,sizeof(c[0]),cmp);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(b[j]==c[i]) cout<<num[j]<<" ";
}
return 0;
}