48 lines
844 B
Plaintext
48 lines
844 B
Plaintext
|
|
fun dummy() {}
|
|
Func = type(dummy);
|
|
NFunc = type(print); # The function type is not a built-in at the moment,
|
|
# but we can define it manually.
|
|
|
|
fun copyList(list: List) {
|
|
|
|
list2 = [];
|
|
|
|
i = 0;
|
|
while i < count(list): {
|
|
list2[i] = list[i];
|
|
i = i+1;
|
|
}
|
|
|
|
return list2;
|
|
}
|
|
|
|
fun numericLess(a: int | float, b: int | float)
|
|
return a < b;
|
|
|
|
fun bubbleSort(list: List, less: NFunc | Func = numericLess) {
|
|
|
|
list2 = copyList(list);
|
|
|
|
do {
|
|
swapped = false;
|
|
|
|
i = 0;
|
|
while i < count(list2)-1 and not swapped: {
|
|
if less(list2[i+1], list2[i]): {
|
|
swapped = true;
|
|
tmp = list2[i+1];
|
|
list2[i+1] = list2[i];
|
|
list2[i] = tmp;
|
|
}
|
|
i = i + 1;
|
|
}
|
|
} while swapped;
|
|
|
|
return list2;
|
|
}
|
|
|
|
unordered_list = [3, 2, 1, 6, -2];
|
|
ordered_list = bubbleSort(unordered_list);
|
|
|
|
print(ordered_list, '\n'); # [-2, 1, 2, 3, 6] |