24
これをすばやく並べ替えます!
まあ... 並べ替えがタグ付けされた59(現在60)の質問がありますが、簡単なクイックソートはありません。 修正する必要があります。 クイックソートに不慣れな方のために、Wikipedia- 配列から、ピボットと呼ばれる要素を選択します。 ピボットより小さい値を持つすべての要素がピボットの前に来るように配列を並べ替え、ピボットより大きい値を持つすべての要素がその後に来るようにします(等しい値はどちらの方向にも進むことができます)。この分割後、ピボットは最終位置になります。これは、パーティション操作と呼ばれます。 上記の手順を、値の小さい要素のサブ配列に、値の大きい要素のサブ配列に個別に再帰的に適用します。 ルール ルールは簡単です: 選択したプログラミング言語で数値クイックソートを実装します。 ピボットは、ランダムに選択するか、中央値3(1番目、最後、および中間要素)で選択する必要があります。 プログラムは、完全なプログラムまたは機能になります。 STDIN、コマンドライン引数、または関数パラメーターを使用して入力を取得できます。文字列入力を使用する場合、入力はスペースで区切られます。 入力には、10進数と負の値が含まれる場合があります。ただし、重複はありません。 STDOUTに出力するか、関数から戻ることができます。 組み込みのソート(またはソート関連)機能や標準の抜け穴はありません。 リストの長さは任意です。 ボーナス1:長さ<= 5のリストまたはサブリストでは、挿入ソートを使用して少し速度を上げます。報酬:-15%。 ボーナス#2:言語が並行性をサポートしている場合、リストを並列に並べ替えます。サブリストで挿入ソートを使用している場合、最終的な挿入ソートは並列である必要はありません。組み込みのスレッドプール/スレッドスケジューリングが許可されます。報酬:-15%。 注:3人の中央値は一部の人々を混乱させていたので、ここに説明があります(再度)ウィキペディア: ピボットのパーティションの最初、中央、最後の要素の中央値を選択する 得点 これはcode-golfです。基本スコアはバイト単位です。ボーナスを1つ獲得した場合は、その数を15%引きます。両方入手した場合は、30%オフにしてください。それは本当に売り込みのように聞こえます。 これは、全体の最短回答を見つけることではなく、各言語で最短の回答を見つけることです。 そして今、リーダーボードスニペットの恥知らずなコピー。 リーダーボード この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からカタログを生成します。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 ## Language Name, N bytes Nは提出のサイズです。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: ## Ruby, <s>104</s> <s>101</s> 96 bytes ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。 ## Perl, 43 + 2 (-p flag) = …