Pythonクックブックの元サイトには3行のクイックソートがある。 def qsort(L): if len(L) <= 1: return L return qsort( [ lt for lt in L[1:] if lt < L[0] ] ) + [ L[0] ] + qsort( [ ge for ge in L[1:] if ge >= L[0] ] ) via Quicksort in 3 Lines 同じような処理をJavaScriptで書くと以下のようになる。 function qsort(L) { if (L.length <= 1) { return L } return qsort(L.slice(1).filter(function(a){return a < L[0]})).concat([L[0]]).concat(qsort(L.slice(1).filter(function(a){return a >= L[0]}))) } ES6にはリスト内包とfor…ofがある。 これを使用すると以下のようになる。 function qsort(L) { if (L.length <= 1) { return L } return qsort([lt for (lt of L.slice(1)) if (lt < L[0])]).concat([L[0]]).concat(qsort([ge for (ge of L.slice(1)) if (ge >= L[0])])) }