Skip to content

Sorting Algorithm in Nuru

This example is prepared by @VictorKariuki

Slice

go
fanya slice = unda(arr,start, end) {
    fanya result = []
    wakati (start < end) {
        result = result + [arr[start]]
        start = start + 1
    }
    rudisha result
}
fanya slice = unda(arr,start, end) {
    fanya result = []
    wakati (start < end) {
        result = result + [arr[start]]
        start = start + 1
    }
    rudisha result
}

Merge

go
fanya merge = unda(left, right) {
    fanya result = []
    fanya lLen = idadi(left)
    fanya rLen = idadi(right)
    fanya  l = 0
    fanya  r = 0
    wakati (l < lLen && r < rLen) {
        kama (left[l] < right[r]) {
            result = result + [left[l]]
            l = l + 1
        } sivyo {
            result = result + [right[r]]
            r = r + 1
        }
    }
    andika(result)
}
fanya merge = unda(left, right) {
    fanya result = []
    fanya lLen = idadi(left)
    fanya rLen = idadi(right)
    fanya  l = 0
    fanya  r = 0
    wakati (l < lLen && r < rLen) {
        kama (left[l] < right[r]) {
            result = result + [left[l]]
            l = l + 1
        } sivyo {
            result = result + [right[r]]
            r = r + 1
        }
    }
    andika(result)
}

Sort and Merge

go
fanya mergeSort = unda(arr){
    fanya len = idadi(arr)
    andika("arr is ", arr," of length ", len)
    kama (len < 2) {
        rudisha arr
    }
    andika("len is greater than or == to 2", len > 1)

    fanya mid = (len / 2)
    andika("arr has a mid point of ", mid)

    fanya left = slice(arr, 0, mid)
    fanya right = slice(arr, mid, len)
    andika("left slice is ", left)
    andika("right slice is ", right)
    fanya sortedLeft = mergeSort(left)
    fanya sortedRight = mergeSort(right)
    andika("sortedLeft is ", sortedLeft)
    andika("sortedRight is ", sortedRight)
    rudisha merge(sortedLeft, sortedRight)
}

fanya arr = [6, 5, 3, 1, 8, 7, 2, 4]
fanya sortedArray = mergeSort(arr)
andika(sortedArray)
fanya mergeSort = unda(arr){
    fanya len = idadi(arr)
    andika("arr is ", arr," of length ", len)
    kama (len < 2) {
        rudisha arr
    }
    andika("len is greater than or == to 2", len > 1)

    fanya mid = (len / 2)
    andika("arr has a mid point of ", mid)

    fanya left = slice(arr, 0, mid)
    fanya right = slice(arr, mid, len)
    andika("left slice is ", left)
    andika("right slice is ", right)
    fanya sortedLeft = mergeSort(left)
    fanya sortedRight = mergeSort(right)
    andika("sortedLeft is ", sortedLeft)
    andika("sortedRight is ", sortedRight)
    rudisha merge(sortedLeft, sortedRight)
}

fanya arr = [6, 5, 3, 1, 8, 7, 2, 4]
fanya sortedArray = mergeSort(arr)
andika(sortedArray)

All code is open source if you can read Assembly