思路:
step1:
先将输入后的a数组复制到b数组中去
step2:
对b数组元素用起泡法由小到大排序
step3:
元素b[0]的大小标号为1,比较b[j+1]和b[j]的大小,如果b[j+1]>b[j],则标号大小
+1,如果b[j+1]==b[j],则标号不变,b[j]的标号放在数组b1中,由b1[j]记录元素
b[j]标号大小。
for(j=0;j
if(b[j+1]>b[j]) b1[j+1]=b1[j]+1;
if(b[j+1]==b[j]) b1[j+1]=b1[j];
}
step4:
对数组a中元素进行标号时,可借用数组b中元素的标号。具体为:a[0]的标记:先找
到和a[0]相同的b[j](0<=j
for(i=0;i
程序如下
#include
main()
{
int i,j,k,n,t,a[102],b[102],a1[102],b1[102];
b1[0]=1;//编号从 1开始.数组a,b 中元素对应的下标 分别放在a1和b1中
printf("输入n\n");
scanf("%d",&n);
printf("输入%d个数\n",n);
for(k=0,i=0;k
scanf("%d",a+k);b[i]=a[k];//保存到数组a中,复制到数组b中
}
for(i=0;i
if(b[j]>b[j+1])
{t=b[j+1];b[j+1]=b[j];b[j]=t;}//起泡法对数组b元素排序
}
for(j=0;j
if(b[j+1]>b[j]) b1[j+1]=b1[j]+1;
if(b[j+1]==b[j]) b1[j+1]=b1[j];
}
for(i=0;i
for(i=0;i
}
用二维数组,第一维表示序号,第二维表示内容,排序后序号变,内容不变,即可实现
#include
#define N 6
main()
{
int a[N],b[N],c[N],i,j,max;
printf("input numbers:\n");
for(i=0;i
b[i]=1;}
for(i=0;i
for(i=0;i
{if(b[j]>max)
max=b[j]; }
b[i]=max+1;}
for(i=0;i
printf("\n");
for(i=0;i
getch();
}