ソースコードの説明.

順位付け改良版

順位を求めるアルゴリズムではデータがn個の場合、繰り返し回数はn2となるため、データ数が増えると処理に時間がかかってしまう。そこで、繰り返し回数お減らすようにした順位付けアルゴリズムを考える。

ソースコード

源文件
/*
 *---------------------------
 *      順位付け_改良版
 *---------------------------
 * Great by liang@Ryukyus
 * Compiler : gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48)
 * Date : 22/02/2011
 */

#include <stdio.h>
#define Num 10
#define Max 100
#define Min 0


int main(void){
  int a[]={56,25,67,88,100,61,55,67,76,56};
  int i,juni[Max+2];

  for(i=Min; i<=Max; i++){  /* 0クリア / <=Maxじゃないと可笑しい  */
    juni[i]=0;
  }

  for(i=0; i<Num; i++){    /* 各得点に対応する添字の配列の内容を+1 */
    juni[a[i]]++;
  }

  juni[Max+1]=1;           /* 101を+1にする */
  for(i=Max; i>=Min; i--){  /* 一つ右の要素の内容お加える */
    juni[i] = juni[i+1] + juni[i];
  }

  printf("得点\t順位\n");
  for(i=0; i<Num; i++){
    printf("%d\t%d\n",a[i],juni[a[i]+1]);
  }
  return 0;
}

実行結果

得点      順位
56         7
25         10
67         4
88         2
100        1
61         6
55         9
67         4
76         3
56         7
Chapter1 @ 目録 @ HomeWork List @ 昭亮's Homepage