update
This commit is contained in:
parent
1f1ad49427
commit
6f050a029e
2496 changed files with 37609 additions and 3031 deletions
|
|
@ -0,0 +1,16 @@
|
|||
-module( bubble_sort ).
|
||||
|
||||
-export( [list/1, task/0] ).
|
||||
|
||||
list( To_be_sorted ) -> sort( To_be_sorted, [], true ).
|
||||
|
||||
task() ->
|
||||
List = "asdqwe123",
|
||||
Sorted = list( List ),
|
||||
io:fwrite( "List ~p is sorted ~p~n", [List, Sorted] ).
|
||||
|
||||
|
||||
sort( [], Acc, true ) -> lists:reverse( Acc );
|
||||
sort( [], Acc, false ) -> sort( lists:reverse(Acc), [], true );
|
||||
sort( [X, Y | T], Acc, _Done ) when X > Y -> sort( [X | T], [Y | Acc], false );
|
||||
sort( [X | T], Acc, Done ) -> sort( T, [X | Acc], Done ).
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
v Sorts the (pre-loaded) stack
|
||||
with bubblesort.
|
||||
v <
|
||||
\l0=?;l&
|
||||
>&:1=?v1-&2[$:{:{](?${
|
||||
>~{ao ^
|
||||
>~}l &{ v
|
||||
o","{n:&-1^?=0:&<
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
%___________________________________________________________________________
|
||||
% Bubble sort
|
||||
|
||||
bubble(0, Res, Res, sorted).
|
||||
bubble(Len, [A,B|T], Res, unsorted) :- A > B, !, bubble(Len,[B,A|T], Res, _).
|
||||
bubble(Len, [A|T], [A|Ts], Ch) :- L is Len-1, bubble(L, T, Ts, Ch).
|
||||
|
||||
bubblesort(In, Out) :- length(In, Len), bubblesort(Len, In, Out).
|
||||
bubblesort(0, In, In).
|
||||
bubblesort(Len, In, Out) :-
|
||||
bubble(Len, In, Bubbled, SortFlag), % bubble the list
|
||||
(SortFlag=sorted -> Out=Bubbled; % list is already sorted
|
||||
SegLen is Len - 1, % one fewer to process
|
||||
writef('bubbled=%w\n', [Bubbled]), % show progress
|
||||
bubblesort(SegLen, Bubbled, Out)).
|
||||
|
||||
test :- In = [8,9,1,3,4,2,6,5,4],
|
||||
writef(' input=%w\n', [In]),
|
||||
bubblesort(In, R),
|
||||
writef('-> %w\n', [R]).
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
#lang racket
|
||||
|
||||
(define (bubble-sort <? v)
|
||||
(define len (vector-length v))
|
||||
(define ref vector-ref)
|
||||
(let loop ([max len]
|
||||
[again? #f])
|
||||
(for ([i (in-range 0 (- max 1))]
|
||||
[j (in-range 1 max)])
|
||||
(define vi (ref v i))
|
||||
(when (<? (ref v j) vi)
|
||||
(vector-set! v i (ref v j))
|
||||
(vector-set! v j vi)
|
||||
(set! again? #t)))
|
||||
(when again? (loop (- max 1) #f)))
|
||||
v)
|
||||
|
|
@ -0,0 +1 @@
|
|||
(bubble-sort < (for/vector ([_ 10]) (random 20)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue