Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
|
|
@ -0,0 +1,39 @@
|
|||
func sift_down(a, start, end) {
|
||||
var root = start;
|
||||
while ((2*root + 1) <= end) {
|
||||
var child = (2*root + 1);
|
||||
if ((child+1 <= end) && (a[child] < a[child + 1])) {
|
||||
child += 1;
|
||||
}
|
||||
if (a[root] < a[child]) {
|
||||
a[child, root] = a[root, child];
|
||||
root = child;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func heapify(a, count) {
|
||||
var start = ((count - 2) / 2);
|
||||
while (start >= 0) {
|
||||
sift_down(a, start, count-1);
|
||||
start -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
func heap_sort(a, count) {
|
||||
heapify(a, count);
|
||||
var end = (count - 1);
|
||||
while (end > 0) {
|
||||
a[0, end] = a[end, 0];
|
||||
end -= 1;
|
||||
sift_down(a, 0, end)
|
||||
}
|
||||
return a
|
||||
}
|
||||
|
||||
var arr = (1..10 -> shuffle); # creates a shuffled array
|
||||
say arr; # prints the unsorted array
|
||||
heap_sort(arr, arr.len); # sorts the array in-place
|
||||
say arr; # prints the sorted array
|
||||
Loading…
Add table
Add a link
Reference in a new issue