一小组一共n人(n<=20),n个人的编号分别为1~n,输入n个人的身高(都为整数,单位厘米),按身高从低到高排序,按身高输出小组的排队编号序列,相同身高按编号顺序输出。
输入:共2行,第一行为人数,第二行为n个人的身高。
输出:按身高从低到高的顺序输出小组的编号序列,以空格分割,每个编号后都有空格,最后换行。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef struct stu
{
int id;
int height;
};
//按身高排序
void Sort(stu arr[], int len)
{
int i, j;
stu temp;
for (i = 0; i < len - 1; i++)
{
for (j = 0; j < len - 1 - i; j++)
{
if (arr[j].height > arr[j + 1].height)
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//输出
void Show(stu a[], int len)
{
for (int i = 0; i < len; i++)
{
printf("%d ", a[i].id);
}
printf("\n");
}
int main()
{
int n;
scanf("%d", &n);
stu* s = (stu*)calloc(n, sizeof(stu));
for (int i = 0; i < n; i++)
{
s[i].id = i + 1;
scanf("%d", &s[i].height);
}
Sort(s, n);
Show(s, n);
free(s);
}