Sorting algorithms/Stooge sort: Difference between revisions

m
m (QuickBASIC and BBC BASIC moved to the BASIC section.)
(5 intermediate revisions by 4 users not shown)
Line 634:
{{out}}
[-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|EasyLang}}==
<syntaxhighlight>
proc stsort left right . d[] .
if d[left] > d[right]
swap d[left] d[right]
.
if right - left + 1 > 2
t = (right - left + 1) div 3
stsort left right - t d[]
stsort left + t right d[]
stsort left right - t d[]
.
.
for i = 1 to 100
d[] &= randint 1000
.
stsort 1 len d[] d[]
print d[]
</syntaxhighlight>
 
=={{header|Eiffel}}==
Line 711 ⟶ 797:
 
=={{header|Elena}}==
ELENA 46.x :
<syntaxhighlight lang="elena">import extensions;
import system'routines;
Line 738 ⟶ 824:
public program()
{
var list := new Range(0, 15).selectBy::(n => randomGenerator.evalnextInt(20)).toArray();
console.printLine("before:", list.asEnumerable());
Line 2,455 ⟶ 2,541:
 
=={{header|Wren}}==
<syntaxhighlight lang="ecmascriptwren">var stoogeSort // recursive
stoogeSort = Fn.new { |a, i, j|
if (a[j] < a[i]) {
Line 2,470 ⟶ 2,556:
}
 
var asarray = [ [4, 65, 2, -31, 0, 99, 2, 83, 782, 1], [7, 5, 2, 6, 1, 4, 2, 6, 3] ]
for (a in asarray) {
System.print("Before: %(a)")
stoogeSort.call(a, 0, a.count-1)
2,060

edits