排序问题
排序问题
Time Limit: 1000MS Memory limit: 65536K
题目描述
输入10个整数,将它们从小到大排序后输出,并给出现在每个元素在原来序列中的位置。
输入
输入数据有一行,包含10个整数,用空格分开。
输出
输出数据有两行,第一行为排序后的序列,第二行为排序后各个元素在原来序列中的位置。
示例输入
1 2 3 5 4 6 8 9 10 7
示例输出
1 2 3 4 5 6 7 8 9 10 1 2 3 5 4 6 10 7 8 9
#include <stdio.h> #include <stdlib.h> typedef struct//自定义类型结构体 { int data; int poi; }A; int main() { A num[10]; int i,j; for(i =0;i<10;i++) { scanf("%d",&num[i].data); num[i].poi=i+1; }//数组初始化 A t;//定义中间变量 for(i=0;i<9;i++) {//冒泡排序 for(j=i+1;j<=9;j++) { if(num[i].data > num[j].data) { t=num[i]; num[i]=num[j]; num[j]=t; } } } for(i=0;i<=9;i++) {//输出数值 if(i<9)//最后一个数后不加空格 printf("%d ",num[i].data); else printf("%d\n",num[i].data); } for(i=0;i<10;i++) {//输出位置 if(i<9) printf("%d ",num[i].poi); else printf("%d\n",num[i].poi); } return 0; }
PS:这道题实际上是简单的结构体应用,排序时注意位置根数值要同时交换。

浙公网安备 33010602011771号