呵呵 思想都是按照关键字(各位求和)再排序 你的很好
只是我在传递数组时排的序,时间上稍微快点 但我完全用了标准库的东东,没什么算法可言
unicorn-h.spaces. ◇◆ sava-scratch.spaces.
#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;
}
上课回来了,这是我的方法。两个函数:
[CODE]int convert(int ival){
return ival % 10 + ival / 10;
}
void sort(int A[],int size){
for (int i = 1;i < size;++i){
if (convert(A[i]) < convert(A[i-1])){
int temp = A[i],j = i;
do{
A[j] = A[j-1];
--j;
}
while (j > 0 && convert(temp) < convert(A[j-1]));
A[j] = temp;
}
}
}
///////////////////////////////////////////////
///////////////////下面是测试//////////////////
int main(){
const int size = 8;
int list[size] = {12,99,81,46,33,10,66,77};
sort(list,size);
for (int i = 0;i < size;++i)
cout << list[i] << " ";
cout << endl;
return 0;
}[/CODE]
这位大哥的比较简洁,呵呵.给俺指明方向了啊.