北航计算机2009年的复试上机题目

2 数组排序
输入一个数组的值,求出各个值从小到大排序后的次序。
输入:输入的第一个数为数组的长度,后面的数为数组中的值,以空格分割
输出:各输入的值按从小到大排列的次序。
sample
input:
4
-3 75 12 -3
output:
1 3 2 1

 

要有创新思想,不要拘于常规思维!

 

#include<stdio.h> #define ERROR -1 #define NUM_MIN 0x80000000 int copt[100]; int main() { int i,j,n; int a[100]; int max; int temp; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a[i]); max=NUM_MIN; temp=0; if(i==0) copt[0]=1; for(j=0;j<i;j++) { if(a[j]>a[i]) copt[j]++; else { if(a[j]>max) { max=a[j]; temp=copt[j]; } } } if(max==a[i]) { copt[i]=temp; for(j=0;j<i;j++) if(a[j]>a[i]) copt[j]--; } else { copt[i]=temp+1; } } for(i=0;i<n;i++) printf("%d ",copt[i]); return 0; } 

你可能感兴趣的:(ini,output)