aboutsummaryrefslogtreecommitdiff
path: root/impl.bqn
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-04 17:37:06 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-04 17:47:38 -0400
commit7fe1ddad0fff7c2952cc98c1d0f8a4c263ead0fa (patch)
tree7e99a1481740f000b6bc82ec1a9d3b7210578a78 /impl.bqn
parent157651c39671b6614bbeba3d73a03a8b5c0cb844 (diff)
Merge sort
Diffstat (limited to 'impl.bqn')
-rw-r--r--impl.bqn15
1 files changed, 11 insertions, 4 deletions
diff --git a/impl.bqn b/impl.bqn
index c38ee689..b09e8081 100644
--- a/impl.bqn
+++ b/impl.bqn
@@ -375,10 +375,17 @@ _binSearch ← {
}
_grade←{
! 1≤=𝕩
- m←×´1 Cell 𝕩 ⋄ Ci←𝔽○(⊑⟜(⥊𝕩))
- cc←m Ci _getCellCmp 0
- Ins←{𝕨⊸(≤+<)◶⟨⊑⟜𝕩,i,-⟜1⊑𝕩˜⟩¨↕1+i←≠𝕩}
- ⟨⟩ {𝕩Ins˜(𝕨(Cc≤0˜)˜m×⊑⟜𝕩)_binSearch≠𝕩}´ m×(↕-˜-⟜1)≠𝕩
+ m←×´1 Cell 𝕩
+ cc←m 𝔽○(⊑⟜(⥊𝕩)) _getCellCmp 0
+ GT←Cc>0˜
+ l←≠𝕩
+ (↕l){
+ i←-d←𝕨 ⋄ j←ei←ej←0
+ e←3 ⋄ c←⟨GT○(⊑⟜𝕩),0,1,2⟩
+ N←{i↩d+𝕨⋄ej↩l⌊d+ei↩l⌊j↩d+𝕩⋄e↩j≥l⋄i R j}
+ R←{𝕨e◶c𝕩}◶{e+↩2×ei=i↩1+𝕨⋄𝕨}‿{e+↩ej=j↩1+𝕩⋄𝕩}‿N
+ {𝕩⋄i R j}¨⊸⊏𝕩
+ }´2⋆⌽↕⌈2 Log 1⌈l
}
_bins←{
c←1-˜=𝕨