生徒のスコアのランキングを作成します。スコアは配列になります。
例: $scores = array(90,100,100)
; 自定义函数实现返回数组 $rank(3,1,1)
;
过去多啦不再A梦2017-05-16 13:18:24
<?php
リーリー?>
これはあなたのニーズを満たすことができますが、質問があります。この 2 つはテストで 99 点を取った方が 2 位になるべきではないでしょうか。
ringa_lee2017-05-16 13:18:24
質問者が望んでいるのは、元の配列の順番(紐付け可能)でランキングを表示することです。一般的な考え方は、元の配列に位置情報を追加し、並べ替えた結果に基づいてランキング配列を逆に構築することです。書き出すと少し長いです:
リーリーn位同率でn位の人が複数いる場合、次の人はn+1人目となりますので、質問者様の例とは少し異なりますのでご注意ください。アルゴリズム全体の複雑さのボトルネックはソートであり、O(n lgn) です。
我想大声告诉你2017-05-16 13:18:24
まずこの配列をスコアで並べ替えてから、この配列を逆挿入します。あとはスコアに応じてキーを入手するだけです。
さらに: スコアはデータベースに書き込まれないため、順番に取り出されます