Sort the letters of string in alphabetical order: Difference between revisions

m
→‎case insensitive: use internal sort
m (→‎{{header|Phix}}: (ok, it is probably an unoptimised bubble sort))
m (→‎case insensitive: use internal sort)
Line 165:
</pre>
===case insensitive===
You can make this case insensitive by applying lower() on each internal comparison, whereas with the builtins that is done (more efficiently) by extracting a custom tagsort:.<br><small>(Just to keep you on your toes I've also replaced the algorithm with a fractionaly saner insertion sort.)</small>
<!--<lang Phix>(phixonline)-->
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">string_sort</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">si</span><span style="color: #0000FF;">[=</span><span style="color: #000000;">n2</span> <span style="color: #0000FF008080;">]to</span> <span style="color: #0000FF7060A8;">=length</span> <span style="color: #0000000000FF;">s(</span><span style="color: #0000FF000000;">[s</span><span style="color: #0000000000FF;">m)</span> <span style="color: #0000FF008080;">]do</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">temp</span>
<span style="color: #008080004080;">forinteger</span> <span style="color: #000000;">nj</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1i</span> <span style="color: #0080800000FF;">to,</span> <span style="color: #7060A8000000;">lengthsj</span> <span style="color: #0000FF;">(=</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">)-[</span><span style="color: #000000;">1j</span> <span style="color: #0080800000FF;">do]</span>
<span style="color: #008080;">forwhile</span> <span style="color: #000000;">mj</span><span style="color: #0000FF;">>=</span><span style="color: #000000;">n2</span> <span style="color: #0000FF008080;">+and</span> <span style="color: #0000007060A8;">1lower</span><span style="color: #0000FF;">(</span><span style="color: #008080000000;">tosj</span><span style="color: #0000FF;">)<</span><span style="color: #7060A8;">lengthlower</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">])</span> <span style="color: #008080;">do</span>
<span style="color: #008080000000;">if</span> <span style="color: #7060A8;">lowers</span><span style="color: #0000FF;">([</span><span style="color: #000000;">sj</span><span style="color: #0000FF;">[]</span><span style="color: #000000;">n</span><span style="color: #0000FF;">])>=</span> <span style="color: #7060A8000000;">lowers</span><span style="color: #0000FF;">([</span><span style="color: #000000;">sj</span><span style="color: #0000FF;">[-</span><span style="color: #000000;">m1</span><span style="color: #0000FF;">])</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">tempj</span> <span style="color: #0000FF;">-=</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">]1</span>
<span style="color: #004080008080;">integerend</span> <span style="color: #000000008080;">tempwhile</span>
<span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">m</span><span style="color: #0000FF;">]</span>
<span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">mj</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">tempsj</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">s</span>
7,822

edits