数字之和排序,数据结构
2016-07-26 21:32
316 查看
C语言实验——各位数字之和排序
Time Limit: 1000MS Memory limit: 65536K
题目描述
给定n个正整数,根据各位数字之和从小到大进行排序。输入
输入数据有多组,每组数据占一行,每行的第一个数正整数n,表示整数个数,后面接n个正整数。当n为0时,不作任何处理,输入结束。n<=10输出
输出每组排序的结果。示例输入
2 1 2 3 121 10 111 0
示例输出
1 2 10 111 121
提示
#include <stdio.h>
#include <stdlib.h>
#define max 10200
typedef struct
{
int *a;
int *b;
int len;
int list;
}sq;
void init(sq &l)
{
l.a=(int *)malloc(max*sizeof(int));
l.b=(int *)malloc(max*sizeof(int));
l.len=0;
l.list=max;
}
int jia(int n)
{
int m,sum=0;
while(n)
{
m=n%10;
n=n/10;
sum=sum+m;
}
return sum;
}
void creat(sq &l,int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%d",&l.a[i]);
l.b[i]=jia(l.a[i]);
}
l.len=n;
}
void compare(sq &l)
{
int i,j,t;
for(i=0;i<l.len-1;i++)
{
for(j=0;j<l.len-i-1;j++)
{
if(l.b[j]>l.b[j+1])
{
t=l.a[j];
l.a[j]=l.a[j+1];
l.a[j+1]=t;
t=l.b[j];
l.b[j]=l.b[j+1];
l.b[j+1]=t;
}
}
}
}
void dis(sq &l)
{
int i=0;
for(i=0;i<l.len;i++)
{
if(i==0) printf("%d",l.a[i]);
else printf(" %d",l.a[i]);
}
printf("\n");
}
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n==0) break;
sq l;
init(l);
creat(l,n);
compare(l);
dis(l);
}
}
相关文章推荐
- 大数据Spark “蘑菇云”行动前传第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码解析
- R语言之数据结构
- 《数据结构之线性表合并操作》
- 数据结构之――B-树
- 如何编写递归程序(回溯法)
- 高并发数据结构Disruptor解析(2)
- 数据结构上机测试1:顺序表的应用
- 线段树进阶学习(例题)--树状数组学习+离散化+成端更新+区间合并+扫描线
- 【数据结构与算法】复杂度度量与分析
- 堆和栈的区别(内存和数据结构)【转】
- sql server 2008 数据结构及数据内容一起导出的方法(导出脚本形式)
- MySQL索引背后的数据结构及算法原理
- 字典
- 02-线性结构1 一元多项式的乘法与加法运算 -数据结构
- 数据结构——实现key为int类型的AVL树
- 51Nod-1174-区间中最大数
- 【数据结构】线性表的顺序存储完整程序
- 数据结构
- 【数据结构】单链表—寻找两个相交链表中第一个公共结点 — 蛮力法 / 栈 / 指针先走
- 有序顺序表的查询