解决“排名次”问题

Author: 喻远霖 Date: 2001年 30期

?牐牻矗以谘?生考试完毕排定学习成绩的时候大伤了一番脑筋。后来,我试着用VB编写了一个“排名次”的程序:将已经统计好总分的一张成绩汇总表,按总分排出每个学生的名次。下面我就给大家简单介绍一下,希望能够对大家有所帮助。
  ?牐犑紫龋ㄒ辶礁鍪椤R桓鍪镃J(N),用于存储每个学生的总分成绩(N为学生数),一个数组MC(N),用于存储相应的每个学生的名次。MC数组初始化为:
  ?牐燤C(1)=1,MC(2)=2,……,MC(N)=N
  ?牐犎缓蟀凑崭魅说淖芊郑匦氯范∕C(N)的值:从第一个学生开始,将总分依次与其后的学生总分比较,根据比较的结果改变名次的值,方法如下:
  ?牐犗缺冉螩J(I)和CJ(J):
  ?牐犎鬋J(I)<CJ(J),则MC(I)=MC(I)+1,MC(J)=MC(J)-1;
  ?牐犎鬋J(I)=CJ(J),则MC(I)=MC(I)+1;
  ?牐犎鬋J(I)>CJ(J),则MC(I)、MC(J)的值都不改变。
  ?牐牥创怂惴ǎ傻玫礁魅说拿危ǚ质嗟龋蜗嗤?。可将此算法编写为一个过程,代码如下:
  ?牐燬ub pmc()?煟?
  ?牐燜or I=1 to n
  ?牐燤c(i)=I
  ?牐燦ext I
  ?牐燜or I=1 to n-1
  ?牐燜or j=I+1 to n
  ?牐營f cj(i)<cj(j)then
  ?牐燤c(i)=mc(i)+1
  ?牐燤c(j)=mc(j)-1
  ?牐燛lse if cj(i)=cj(j) then
  ?牐燤c(i)=mc(i)+1
  ?牐燛nd if
  ?牐燛nd if
  ?牐燦ext j
  ?牐燦ext I
  ?牐燛nd sub
  ?牐牼咛宓某绦蛘饫锞筒蛔甘隽恕H裟阌懈玫乃惴ǎ辞敕钕赘蠹夜蚕怼?