Sorting algorithms/Stooge sort: Difference between revisions
Content added Content deleted
m (QuickBASIC and BBC BASIC moved to the BASIC section.) |
No edit summary |
||
Line 634: | Line 634: | ||
{{out}} |
{{out}} |
||
[-6, -5, -2, 1, 3, 3, 4, 5, 7, 10] |
[-6, -5, -2, 1, 3, 3, 4, 5, 7, 10] |
||
=={{header|Delphi}}== |
|||
{{works with|Delphi|6.0}} |
|||
{{libheader|SysUtils,StdCtrls}} |
|||
<syntaxhighlight lang="Delphi"> |
|||
procedure StoogeSort(var L: array of integer; I,J: integer); |
|||
var T,M: integer; |
|||
begin |
|||
if L[j] < L[i] then |
|||
begin |
|||
M:=L[I]; |
|||
L[I]:=L[J]; |
|||
L[J]:=M; |
|||
end; |
|||
if (J - I) > 1 then |
|||
begin |
|||
T:=(J - I + 1) div 3; |
|||
StoogeSort(L, I, J-T); |
|||
StoogeSort(L, I+T, J); |
|||
StoogeSort(L, I, J-T); |
|||
end; |
|||
end; |
|||
procedure DoStoogeSort(var L: array of integer); |
|||
begin |
|||
StoogeSort(L,0,High(L)); |
|||
end; |
|||
var TestData: array [0..9] of integer = (17, 23, 21, 56, 14, 10, 5, 2, 30, 25); |
|||
function GetArrayStr(IA: array of integer): string; |
|||
var I: integer; |
|||
begin |
|||
Result:='['; |
|||
for I:=0 to High(IA) do |
|||
begin |
|||
if I>0 then Result:=Result+' '; |
|||
Result:=Result+Format('%3d',[IA[I]]); |
|||
end; |
|||
Result:=Result+']'; |
|||
end; |
|||
procedure ShowStoogeSort(Memo: TMemo); |
|||
begin |
|||
Memo.Lines.Add('Raw Data: '+GetArrayStr(TestData)); |
|||
DoStoogeSort(TestData); |
|||
Memo.Lines.Add('Sorted Data: '+GetArrayStr(TestData)); |
|||
end; |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
Raw Data: [ 17 23 21 56 14 10 5 2 30 25] |
|||
Sorted Data: [ 2 5 10 14 17 21 23 25 30 56] |
|||
Elapsed Time: 1.158 ms. |
|||
</pre> |
|||
=={{header|Eiffel}}== |
=={{header|Eiffel}}== |