Family Day update
This commit is contained in:
parent
aac6731f2c
commit
9ad63ea473
2442 changed files with 39761 additions and 8255 deletions
|
|
@ -42,7 +42,7 @@ extension op
|
|||
|
||||
public program()
|
||||
{
|
||||
var list := new int[]{3, 14, 1, 5, 9, 2, 6, 3};
|
||||
var list := new int[]::(3, 14, 1, 5, 9, 2, 6, 3);
|
||||
|
||||
console.printLine("before:", list.asEnumerable());
|
||||
console.printLine("after :", list.quickSort().asEnumerable());
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
module Slice = CCArray_slice
|
||||
|
||||
let quicksort : int Array.t -> unit = fun arr ->
|
||||
let rec quicksort' : int Slice.t -> unit = fun slice ->
|
||||
let len = Slice.length slice in
|
||||
|
||||
if len > 1 then begin
|
||||
let pivot = Slice.get slice (len / 2)
|
||||
and i = ref 0
|
||||
and j = ref (len - 1)
|
||||
in
|
||||
while !i < !j do
|
||||
while Slice.get slice !i < pivot do incr i done;
|
||||
while Slice.get slice !j > pivot do decr j done;
|
||||
|
||||
if !i < !j then begin
|
||||
let i_val = Slice.get slice !i in
|
||||
Slice.set slice !i (Slice.get slice !j);
|
||||
Slice.set slice !j i_val;
|
||||
|
||||
incr i;
|
||||
decr j;
|
||||
end
|
||||
done;
|
||||
|
||||
quicksort' (Slice.sub slice 0 !i);
|
||||
quicksort' (Slice.sub slice !i (len - !i));
|
||||
end
|
||||
in
|
||||
(* Take the array into an aliased array slice *)
|
||||
Slice.full arr |> quicksort'
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
function quicksort($in) {
|
||||
$n = $in.count
|
||||
switch ($n) {
|
||||
0 {}
|
||||
1 { $in[0] }
|
||||
2 { if ($in[0] -lt $in[1]) {$in[0], $in[1]} else {$in[1], $in[0]} }
|
||||
default {
|
||||
$pivot = $in | get-random
|
||||
$lt = $in | ? {$_ -lt $pivot}
|
||||
$eq = $in | ? {$_ -eq $pivot}
|
||||
$gt = $in | ? {$_ -gt $pivot}
|
||||
@(quicksort $lt) + @($eq) + @(quicksort $gt)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
fun par_helper([], x, l, r) = (l, r) |
|
||||
par_helper(h::t, x, l, r) =
|
||||
fun par_helper([], x, l, r) = (l, r)
|
||||
| par_helper(h::t, x, l, r) =
|
||||
if h <= x then
|
||||
par_helper(t, x, l @ [h], r)
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue