n个不相同的数,从小到大排序之后,输出他们的初始位置
题目:给你n(<=100)个不相同的数,从小到大排序之后,按排序之后的顺序输出他们的初始位置
输入:
第一行一个数n
接下来一行n个数(不大于10000)
输出:
一行n个数,表示排序后每个数原来的位置
输入样例:
5
1 5 2 3 4
输出样例
1
#include <stdio.h>
struct NuminArr{
int num;
int rank;
};
void Sort(struct NuminArr* arr,unsigned int N){
int i,j;
for (i=0;i<N-1;++i)
for (j=i;j<N-1;++j){
if (arr.num>arr.num){
struct NuminArr tmp=arr;
arr=arr;
arr=tmp;
}
}
}
int main(){
int N,i;
struct NuminArr nums;
scanf("%d",&N);
for (i=0;i<N;++i) {
int tmp;
scanf("%d",&(nums.num));
nums.rank=i+1;
}
Sort(nums,N);
printf("\n");
for (i=0;i<N;++i) printf("%d ",nums.rank);
} Croper 发表于 2019-3-24 00:16
好像不太对
我输入
5
7 9 3 10 12
得到的是
1 3 2 4 5
(不知道怎么发图片) #include<stdio.h>
int main(void)
{
int a,b={0};
int i,j,n,k;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
b+=(a>=a);
}
}
for(k=1,i=0;i<n;i++,k++)
{
for(j=0;j<n;j++)
{
if(b==k)
{
printf("%d ",j+1);
}
}
}
}
自己解决了。。。。 没多想,排序写快了void Sort(struct NuminArr* arr, unsigned int N) {
int i, j;
for (i = N-1; i >0; --i)
for (j = 0; j < i; ++j) {
if (arr.num > arr.num) {
struct NuminArr tmp = arr;
arr = arr;
arr = tmp;
}
}
}
页:
[1]