排序问题

排序问题

 

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:这道题实际上是简单的结构体应用,排序时注意位置根数值要同时交换。

posted @ 2014-11-14 09:03  夏迩  阅读(150)  评论(0)    收藏  举报