Sorting

Wikipedia: Sorting algorithm
Tengo has no built-in sort function, but it is straightforward to implement one using closures and recursion.

fmt := import("fmt")
merge := func(left, right) {
    result := []
    li := 0
    ri := 0
    for li < len(left) && ri < len(right) {
        if left[li] <= right[ri] {
            result = append(result, left[li])
            li++
        } else {
            result = append(result, right[ri])
            ri++
        }
    }
    for li < len(left) {
        result = append(result, left[li])
        li++
    }
    for ri < len(right) {
        result = append(result, right[ri])
        ri++
    }
    return result
}
msort := func(arr) {
    if len(arr) <= 1 { return arr }
    mid := len(arr) / 2
    return merge(msort(arr[:mid]), msort(arr[mid:]))
}
fmt.println(msort([5, 2, 8, 1, 9, 3]))
fmt.println(msort(["banana", "apple", "cherry", "date"]))
nums := [5, 2, 8, 1]
sorted := msort(nums)
fmt.println("original: ", nums)
fmt.println("sorted:  ", sorted)

try it

[1, 2, 3, 5, 8, 9]
["apple", "banana", "cherry", "date"]
original: [5, 2, 8, 1]
sorted:  [1, 2, 5, 8]
loading…