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