Maison  >  Questions et réponses  >  le corps du texte

Algorithme - Comment implémenter le classement des scores en utilisant PHP, des bonnes idées ?

Faites un classement des scores des élèves. Les scores sont un tableau Après le classement, affichez les résultats du classement :
Par exemple $scores = array(90,100,100); 自定义函数实现返回数组 $rank(3,1,1) ;

.
世界只因有你世界只因有你2737 Il y a quelques jours1142

répondre à tous(5)je répondrai

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:18:24

    <?php

    $arr = [99,100,100];
    $arr1=$arr;
    rsort($arr1);
    $c=[];
     foreach ( $arr as $v){
         $b= array_search($v, $arr1);
         $c[]=$b+1;
     }
     print_r($c);
    

    ?>

    Cela peut répondre à vos besoins, mais j'ai une question. Les deux sont à égalité pour la première place, celui qui a obtenu 99 à l'examen ne devrait-il pas être deuxième ?

    répondre
    0
  • ringa_lee

    ringa_lee2017-05-16 13:18:24

    Ce que souhaite l'interrogateur, c'est afficher les classements dans l'ordre du tableau d'origine (peut être lié). L'idée générale est de compléter le tableau d'origine avec des informations de position, puis de construire à l'envers le tableau de classement en fonction des résultats triés. C'est un peu long à écrire :

    get_ranks(a[1:n])
      s ← array(n)
      ranks ← array(n)
      for i from 1 to n                 ▷ s[i] has record type
        s[i] ← {position: i, value: a[i], rank: 0}
      descending_sort(s by value)       ▷ sort by s[i].value
      s[1].rank ← 1
      for i from 2 to n
        if s[i].value < s[i-1].value    ▷ dense rank
          s[i].rank ← s[i-1].rank + 1
        else
          s[i].rank ← s[i-1].rank
      for i from 1 to n                 ▷ construct result
        ranks[s[i].position] ← s[i].rank
      return ranks[]
      

    Notez que s'il y a plusieurs nièmes personnes à égalité pour la nième place, la personne suivante sera la n+1ème personne, ce qui est un peu différent de l'exemple donné par la personne qui pose la question. Le goulot d'étranglement de complexité de l'ensemble de l'algorithme est le tri, qui est O(n lgn).

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-16 13:18:24

    Utiliser la propre fonction de tri de tableaux de PHP ?

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:18:24

    http://www.php.net/manual/zh/...
    Le tri des données intégré devrait pouvoir résoudre votre problème

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:18:24

    Triez d'abord ce tableau par score, puis réinitialisez ce tableau. Ensuite, récupérez simplement la clé en fonction du score.

    De plus : vos partitions ne sont pas inscrites dans la base de données, elles sont donc sorties dans l'ordre

    répondre
    0
  • Annulerrépondre