2011-12-03 5 views
1

私はCodi​​lityの準備をしています。大きな値と多くのエントリを持つ配列を見つける最も速い方法は何かを知る必要があります。Pythonでalgoをソートする最速の方法

inbuiltのpythonソートが最速か、他のソート方法を実装する必要がありますか?

+1

algo [rithm]のソートや配列の検索が何を意味するのかは不明です。あなたはその質問を言い換えることができますか? –

答えて

10

データが既にPythonに含まれている場合は、Pythonのsortが最速の方法です。それはランダムなデータでうまく動作し、部分的に順序付けされたデータではうまく動作するTimsort algorithmを使用します。

最大のアイテムのみが必要な場合は、heapq.nlargestを使用してください。

+2

heapq.nlargestとheapq.nsmallest: "後者の2つの関数はnの値が小さいほど最適ですが、大きい値の場合はsorted()関数を使う方が効率的です。組み込みのmin()関数とmax()関数を使用することができます。 – sunqiang

0

あなたは、このメソッドを使用する必要があり、元のリストを失うことを気にしない場合

list.sort() 

を使用すると、場所にリストをソートする最も簡単な方法でしょう。あなたは、これはそれを行う方法である元のリストを維持する必要がある場合

sorted() 

を使用して

list.sort()よりも、それは効率が悪くなって、新しいリストを返しますが。

2

私はcodility.com面接のサイトから得た印象は、迅速に提供される正しい解決策は、難しい(より効率的な)解決策よりも重要であるということです。その環境では、大規模な配列をソートするのに合理的に効率的なPythonの組み込みソート、Timsortを使用し、安定していて、適切なソートを行います。

+0

コーディングテストの準備に必要なものは何ですか? – codersofthedark

+5

何が必要なのか分かりませんが、私はウェブサイトから2つの文章にコメントしました。「コードダイレクトは、 の正しいプログラムを書くことができない求職者を除外して、ソフトウェア才能募集人の時間を節約します。ソリューションが安定しているかどうか。両方の文章は、プログラムの正しさを強調する。 2つ目はコーナーケースの問題を回避することも示唆しています。これは一般に、頻繁に使用されるライブラリルーチンでは起こりにくいものです。 –

+0

@ jwpat7:あなたがCodilityでテストされているときには時間制限がありますが、解決策には複雑なメモが割り当てられています。そして、非常に効率的で働きやすいが、「理解しにくい」解決策は、シンプルで迅速な解決策よりもずっと良いアイデアだと思われる。募集者のために用意されたデモから見ることができるものは、コーディリティは時間制限を与え、募集者にコードを見せることができますが、スクリプトの耐久性とスピードが最も重要です。目標は、スクリプトができるだけ速く結果を返すこと、そしてすべての可能な入力に対してです。 – Tadeck

関連する問題