Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,32 +0,0 @@
|
|||
with Ada.Text_IO;
|
||||
procedure Stooge is
|
||||
type Integer_Array is array (Positive range <>) of Integer;
|
||||
procedure Swap (Left, Right : in out Integer) is
|
||||
Temp : Integer := Left;
|
||||
begin
|
||||
Left := Right;
|
||||
Right := Temp;
|
||||
end Swap;
|
||||
procedure Stooge_Sort (List : in out Integer_Array) is
|
||||
T : Natural := List'Length / 3;
|
||||
begin
|
||||
if List (List'Last) < List (List'First) then
|
||||
Swap (List (List'Last), List (List'First));
|
||||
end if;
|
||||
if List'Length > 2 then
|
||||
Stooge_Sort (List (List'First .. List'Last - T));
|
||||
Stooge_Sort (List (List'First + T .. List'Last));
|
||||
Stooge_Sort (List (List'First .. List'Last - T));
|
||||
end if;
|
||||
end Stooge_Sort;
|
||||
Test_Array : Integer_Array := (1, 4, 5, 3, -6, 3, 7, 10, -2, -5, 7, 5, 9, -3, 7);
|
||||
begin
|
||||
Stooge_Sort (Test_Array);
|
||||
for I in Test_Array'Range loop
|
||||
Ada.Text_IO.Put (Integer'Image (Test_Array (I)));
|
||||
if I /= Test_Array'Last then
|
||||
Ada.Text_IO.Put (", ");
|
||||
end if;
|
||||
end loop;
|
||||
Ada.Text_IO.New_Line;
|
||||
end Stooge;
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
>>SOURCE FREE
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. stooge-sort-test.
|
||||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 Arr-Len CONSTANT 7.
|
||||
|
||||
01 arr-area VALUE "00004001000020000005000230000000000".
|
||||
03 arr-elt PIC 9(5) OCCURS Arr-Len TIMES
|
||||
INDEXED BY arr-idx.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
DISPLAY "Unsorted: " NO ADVANCING
|
||||
PERFORM VARYING arr-idx FROM 1 BY 1 UNTIL Arr-Len < arr-idx
|
||||
DISPLAY arr-elt (arr-idx) " " NO ADVANCING
|
||||
END-PERFORM
|
||||
DISPLAY SPACE
|
||||
|
||||
CALL "stooge-sort" USING arr-area, OMITTED, OMITTED
|
||||
|
||||
DISPLAY "Sorted: " NO ADVANCING
|
||||
PERFORM VARYING arr-idx FROM 1 BY 1 UNTIL Arr-Len < arr-idx
|
||||
DISPLAY arr-elt (arr-idx) " " NO ADVANCING
|
||||
END-PERFORM
|
||||
DISPLAY SPACE
|
||||
.
|
||||
END PROGRAM stooge-sort-test.
|
||||
|
||||
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. stooge-sort RECURSIVE.
|
||||
|
||||
DATA DIVISION.
|
||||
LOCAL-STORAGE SECTION.
|
||||
01 Arr-Len CONSTANT 7.
|
||||
|
||||
01 i PIC 99 COMP.
|
||||
01 j PIC 99 COMP.
|
||||
|
||||
01 temp PIC 9(5).
|
||||
|
||||
01 t PIC 99 COMP.
|
||||
|
||||
LINKAGE SECTION.
|
||||
01 arr-area.
|
||||
03 arr-elt PIC 9(5) OCCURS Arr-Len TIMES.
|
||||
|
||||
01 i-val PIC 99 COMP.
|
||||
01 j-val PIC 99 COMP.
|
||||
|
||||
PROCEDURE DIVISION USING arr-area, OPTIONAL i-val, OPTIONAL j-val.
|
||||
IF i-val IS OMITTED
|
||||
MOVE 1 TO i
|
||||
ELSE
|
||||
MOVE i-val TO i
|
||||
END-IF
|
||||
IF j-val IS OMITTED
|
||||
MOVE Arr-Len TO j
|
||||
ELSE
|
||||
MOVE j-val TO j
|
||||
END-IF
|
||||
|
||||
IF arr-elt (j) < arr-elt (i)
|
||||
MOVE arr-elt (i) TO temp
|
||||
MOVE arr-elt (j) TO arr-elt (i)
|
||||
MOVE temp TO arr-elt (j)
|
||||
END-IF
|
||||
|
||||
IF j - i + 1 >= 3
|
||||
COMPUTE t = (j - i + 1) / 3
|
||||
SUBTRACT t FROM j
|
||||
CALL "stooge-sort" USING arr-area, CONTENT i, j
|
||||
ADD t TO i, j
|
||||
CALL "stooge-sort" USING arr-area, CONTENT i, j
|
||||
SUBTRACT t FROM i, j
|
||||
CALL "stooge-sort" USING arr-area, CONTENT i, j
|
||||
END-IF
|
||||
.
|
||||
END PROGRAM stooge-sort.
|
||||
|
|
@ -24,8 +24,8 @@ extension op
|
|||
|
||||
public program()
|
||||
{
|
||||
var list := new Range(0, 15).selectBy::(n => randomGenerator.nextInt(20)).toArray();
|
||||
var list := new Range(0, 15).selectBy::(n => Random.nextInt(20)).toArray();
|
||||
|
||||
console.printLine("before:", list.asEnumerable());
|
||||
console.printLine("after:", list.stoogeSort().asEnumerable())
|
||||
Console.printLine("before:", list.asEnumerable());
|
||||
Console.printLine("after:", list.stoogeSort().asEnumerable())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
function stooge(sequence s, integer i, integer j)
|
||||
object temp
|
||||
integer t
|
||||
if compare(s[j], s[i]) < 0 then
|
||||
temp = s[i]
|
||||
s[i] = s[j]
|
||||
s[j] = temp
|
||||
end if
|
||||
if j - i > 1 then
|
||||
t = floor((j - i + 1)/3)
|
||||
s = stooge(s, i , j-t)
|
||||
s = stooge(s, i+t, j )
|
||||
s = stooge(s, i , j-t)
|
||||
end if
|
||||
return s
|
||||
end function
|
||||
|
||||
function stoogesort(sequence s)
|
||||
return stooge(s,1,length(s))
|
||||
end function
|
||||
|
||||
constant s = rand(repeat(1000,10))
|
||||
|
||||
? s
|
||||
? stoogesort(s)
|
||||
|
|
@ -1,18 +1,16 @@
|
|||
(phixonline)-->
|
||||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
|
||||
with javascript_semantics
|
||||
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">stoogesort</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">integer</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">j</span><span style="color: #0000FF;">=</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #008080;">if</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;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</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: #0000FF;">=</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;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]}</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">j</span><span style="color: #0000FF;">-</span><span style="color: #000000;">i</span><span style="color: #0000FF;">></span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">t</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">floor</span><span style="color: #0000FF;">((</span><span style="color: #000000;">j</span><span style="color: #0000FF;">-</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)/</span><span style="color: #000000;">3</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">stoogesort</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #000000;">i</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">j</span><span style="color: #0000FF;">-</span><span style="color: #000000;">t</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">stoogesort</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">t</span><span style="color: #0000FF;">,</span><span style="color: #000000;">j</span> <span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">stoogesort</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #000000;">i</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">j</span><span style="color: #0000FF;">-</span><span style="color: #000000;">t</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #000000;">s</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
function stoogesort(sequence s, integer i=1, j=length(s))
|
||||
if s[j]<s[i] then
|
||||
{s[i],s[j]} = {s[j],s[i]}
|
||||
end if
|
||||
if j-i>1 then
|
||||
integer t = floor((j-i+1)/3)
|
||||
s = stoogesort(s,i, j-t)
|
||||
s = stoogesort(s,i+t,j )
|
||||
s = stoogesort(s,i, j-t)
|
||||
end if
|
||||
return s
|
||||
end function
|
||||
|
||||
<span style="color: #0000FF;">?</span><span style="color: #000000;">stoogesort</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">shuffle</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">tagset</span><span style="color: #0000FF;">(</span><span style="color: #000000;">10</span><span style="color: #0000FF;">)))</span>
|
||||
<!--
|
||||
?stoogesort(shuffle(tagset(10)))
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
Function StoogeSort( [Int32[]] $L )
|
||||
{
|
||||
$i = 0
|
||||
$j = $L.length-1
|
||||
if( $L[$j] -lt $L[$i] )
|
||||
{
|
||||
$L[$i] = $L[$i] -bxor $L[$j]
|
||||
$L[$j] = $L[$i] -bxor $L[$j]
|
||||
$L[$i] = $L[$i] -bxor $L[$j]
|
||||
}
|
||||
if( $j -gt 1 )
|
||||
{
|
||||
$t = [int] ( ( $j + 1 ) / 3 )
|
||||
$k = $j - $t + 1
|
||||
[Array]::Copy( [Int32[]] ( StoogeSort( $L[0..( $j - $t ) ] ) ), $L, $k )
|
||||
[Array]::ConstrainedCopy( [Int32[]] ( StoogeSort( $L[$t..$j ] ) ), 0, $L, $t, $k )
|
||||
[Array]::Copy( [Int32[]] ( StoogeSort( $L[0..( $j - $t ) ] ) ), $L, $k )
|
||||
}
|
||||
$L
|
||||
}
|
||||
|
||||
StoogeSort 9, 7, 5, 3, 1, 2, 4, 6, 8
|
||||
Loading…
Add table
Add a link
Reference in a new issue