Algorithme - Comment implémenter le classement des scores en utilisant PHP, des bonnes idées ?
世界只因有你
世界只因有你 2017-05-16 13:16:24
0
5
1208

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) ;

.
世界只因有你
世界只因有你

répondre à tous(5)
过去多啦不再A梦

<?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 ?

左手右手慢动作

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).

Ty80

Utiliser la propre fonction de tri de tableaux de PHP ?

phpcn_u1582

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

我想大声告诉你

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal