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}}==