===Shell Sort=== For completeness, below is an MMBasic version of a Shell sort - it is about four to five times faster than a bubble sort but does have a serious caveat in that it can fail if the data is in an unfortunate order - this is just a fact of life for Shell sort. That said, it is very unlikely to happen but be warned. Before choosing a sort algorithm, read [[Sort_algorithms_A_comparison|this article]]. **Example**: Option Base 0 Dim xx As Integer xx=my_arraysize 'lack of UBOUND() means we have to manually track the array size Dim SP$(xx) ShellSort xx **ShellSort**: SUB ShellSort(SPTop) LOCAL INTEGER i,j LOCAL FLOAT k LOCAL STRING a$ k = INT(SPTop / 2) WHILE k > 0 FOR i = 1 to SPTop j = i a$ = SP$(i) WHILE (j >= k+1 AND SP$(ABS(j-k)) > a$) SP$(j) = SP$(j-k) j = j - k WEND sp$(j) = a$ NEXT IF k = 2 THEN k = 1 ELSE k = INT(k * 0.454545) ' 5/11 sort balancing value END IF WEND END SUB