Implemented quicksort in _sort()

This commit is contained in:
2023-02-13 13:31:58 +00:00
parent 9725f3c6a3
commit 16b71ba6f4
3 changed files with 139 additions and 16 deletions

View File

@@ -1,22 +1,27 @@
//polyfill the _insert function
fn _insert(self, k, v) {
var tmp1 = v;
var tmp2;
for (var i = k; i < self.length(); i++) {
tmp2 = self[i];
self[i] = tmp1;
tmp1 = tmp2;
}
import compound;
self.push(tmp1);
return self;
fn less(a, b) {
return a < b;
}
var a = [1, 2, 3];
fn greater(a, b) {
return a > b;
}
a = a.insert(1, 42);
var a = [7, 2, 1, 8, 6, 3, 5, 4];
var b = [7, 2, 1, 4, 6, 3, 5, 8];
var c = [1, 2, 3, 4, 5, 6, 7, 8];
var d = [7, 2, 1, 8, 6, 3, 5, 4];
assert a == [1, 5, 2, 3], "index assignment left failed";
a = a.sort(less);
b = b.sort(less);
c = c.sort(less);
d = d.sort(greater);
assert a == [1, 2, 3, 4, 5, 6, 7, 8], "array.sort(less) failed";
assert b == [1, 2, 3, 4, 5, 6, 7, 8], "array.sort(less) with pivot high failed";
assert c == [1, 2, 3, 4, 5, 6, 7, 8], "array.sort(less) pre-sorted array failed";
assert d == [8, 7, 6, 5, 4, 3, 2, 1], "array.sort(greater) failed";
print "All good";
print "All good";