ホームページ  >  記事  >  バックエンド開発  >  javascript - オリンピックのメダルについて、金、銀、銅の順に国内順位を決定する方法(詳細はタイトルを参照)

javascript - オリンピックのメダルについて、金、銀、銅の順に国内順位を決定する方法(詳細はタイトルを参照)

WBOY
WBOYオリジナル
2016-10-10 11:56:102172ブラウズ

データの構造は大体こんな感じです

リーリー

並べ替えルールは、金メダルが最初に比較され、金メダルは常に銀メダルより優れており、銀メダルは常に銅メダルより優れており、銅メダルは常にIDよりも優れており、IDは最初の配列シーケンス番号です

スコア内の 3 つの数字は、それぞれ金、銀、銅の量を表します

組み込み関数の使用をあまり必要としないものは、PHP で実装するのが最適です

返信内容:

データの構造は大体こんな感じです

リーリー

並べ替えルールは、金メダルが最初に比較され、金メダルは常に銀メダルより優れており、銀メダルは常に銅メダルより優れており、銅メダルは常にIDよりも優れており、IDは最初の配列シーケンス番号です

スコア内の 3 つの数字は、それぞれ金、銀、銅の量を表します

組み込み関数の使用をあまり必要としないものは、PHP を使用して実装するのが最適です

メダルの数を表す数字が3つありますが、せめて並べ替えのルールを教えていただけますか?

メダルの総数ですか?それぞれ金、銀、銅に応じて?それとも奇妙な順列でしょうか?


多くの方法があります。怠惰な方法は、最初に金メダルで並べ替え、同じ金メダルを持つものを選択し、次に同じものの中から銀メダルで並べ替えることです。

一度に並べ替えたい場合は、金、銀、銅のシリアル番号を数値に変更して並べ替えてください。

たとえば、配列は次のようになります—
リーリー

ルールは非常に簡単で、金、銀、銅のシリアル番号を 3 桁まで入力し、最後に数字のグループを直接並べ替えるだけで完了します。

PHP array_multisort は、SQL ORDER BY のような複数のフィールドによる並べ替えを実装します。

たとえば、オリンピックのメダルリストは、金メダル、銀メダル、銅メダルの数で降順​​に並べ替えられます。 リーリー

各国の各種メダルの数が999個を超えないことを前提としてPython版を作ってみましょう。

リーリー

スコアはデザイン時に分離するのが最適です。

クラス (国、金、銀、銅の番号を含む) を設計し、Comparable インターフェイスを実装し、説明したルールに従って比較メソッドを実装します。単純なことではありませんか?


金メダル + 銀メダル + 銅メダル + ID で数値を形成し、たとえば id13-[10, 2, 20] で 10022013 を形成し、この数値に従って直接並べ替えます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。