Let me show how to write them in Fuzuli.
Bubble Sort in Fuzuli:
(def mylist LIST) (let mylist (list 5 6 4 2 3 9 1 10 5)) (print "Original List:\n") (print mylist "\n") (for (let i 0) (< i (length mylist)) (inc i) (for (let j (clone i)) (< j (length mylist)) (inc j) (if (> (nth mylist i) (nth mylist j)) (block (let temp (nth mylist i)) (set mylist i (nth mylist j)) (set mylist j temp) ) ) ) ) (print "After sorting:\n") (print mylist "\n")
The output is :
Original List:
[5, 6, 4, 2, 3, 9, 1, 10, 5]
After sorting:
[1, 2, 3, 4, 5, 5, 6, 9, 10]
The code is similar to one written in both Lisp, C or Java! Hope the taste of code is good for you. Next one is the Quick sort:
Quick Sort in Fuzuli:
(def mylist LIST) (let mylist (list 5 6 4 2 3 9 1 10 5)) (print "Original List:\n") (print mylist "\n") (function partition (params arr left right) (block (def i INTEGER) (def j INTEGER)(def tmp INTEGER) (def pivot INTEGER) (let i (clone left)) (let j (clone right)) (let pivot (nth arr (/ (+ left right) 2))) (while (<= i j) (block (while (< (nth arr i) pivot)(inc i)) (while (> (nth arr j) pivot) (-- j)) (if (<= i j) (block (let tmp (nth arr i)) (set arr i (nth arr j)) (set arr j tmp) (++ i) (-- j) ) ) ) ) (return i) ) ) (function quicksort (params arr left right) (block (def index INTEGER) (let index (partition arr left right)) (if (< left (- index 1)) (block (quicksort arr left (- index 1)) ) ) (if (< index right) (block (quicksort arr index right) ) ) ) ) (quicksort mylist 0 (- (length mylist) 1)) (print "After sorting:\n") (print mylist "\n")
The output is :
Original List:
[5, 6, 4, 2, 3, 9, 1, 10, 5]
After sorting:
[1, 2, 3, 4, 5, 5, 6, 9, 10]
which is the same for bubble sort but the latter is faster.
Hope you like the code. See you next!