[JavaScript]スターリンソートをフォークして毛沢東ソートを作りました[大本営発表]
👤 sudosan 📆 12月 16, 2019 📝 0
こんにちは。今年も年の瀬がやってきました。この時期になるとやる義務がたまに発生するのがアドベントカレンダーですね。
この記事はTUT Advent Calendar 2019 17日目の記事です。
なお、相変わらずクリスマスはぼっちです。
さて、最近スターリンソートというとてもおもしろいソートを知りました。
ソートされていない数を粛清することによりなんと計算量をO(n)とした画期的なソートアルゴリズムです。
先駆者様:https://qiita.com/Sirloin/items/c9e5c74be3366df65bce
それをただJavaScriptに移植するだけでは面白みがないので、偉大なる隣国を敬い毛沢東ソートを作成しました
输出量 = console.log;
数据 = [1,8,8,1,35,3,64,8,2,19890604];
输出量(文化大革命(数据));
function 文化大革命(矩阵){
let 毛泽东思想=[];
let 临时 = 0;
for(let 数 = 0;数 < 矩阵.length;数++){
if(临时 <= 矩阵[数])
{
毛泽东思想.push(矩阵[数]);
临时 = 矩阵[数];
}
}
return 毛泽东思想;
}
これを実行すると結果は
> [ 1, 8, 8, 35, 64, 19890604 ]
となります。スターリンソートそのままです。
なんの面白みもないですね。
大本営ソート
そこでこのままでは面白みにかけると思い大本営ソートというものを制作しました
function 大本営ソート(配列){
let 仮 = 0;
for(let 大和魂 = 0;大和魂 < 配列.length;大和魂++){
if(仮>配列[大和魂]){
const 粉飾 = Math.floor( Math.random() * 3) + 仮;
配列[大和魂] = 粉飾 + 配列[大和魂];
}
仮 = 配列[大和魂];
}
return 配列;
}
このソートは戦時中の大本営発表よろしく、もし都合の悪い数値が来たら適当にごまかして返すソートアルゴリズムです。
仮に[1,3,2,6,19,2,1945,2019]という配列を入れると
> [ 1, 3, 6, 6, 19, 22, 1945, 2019 ]
と帰ってきます。
計算量はO(n)なのでスターリンソートと同じく効率の良いソートですね。
米・英国人の発明したアルゴリズムは精神力がなく腰抜けなため大和魂にあふれるこのソートに敵うはずがありません。
此レニテ大東亜戦争ニ於ケル我軍ノ勝利ハ確実デアリマス。
PS:良い子はちゃんとしたソートを使ってね。
関連
-
選択した画面を簡単にツイートするアプリを作った
6月 13, 2016
-
マルコフ連鎖で文章を作る
6月 29, 2016
-
ビットコイン/bitcoin/BTCを「ビット」に置き換えるブックマークレット
12月 14, 2017
コメントを残す