Kanuni za Upangaji katika Nuru
Mfano huu umeandaliwa na @VictorKariuki
Vunja
go
fanya vunja = unda(safu, mwanzo, mwisho) {
fanya matokeo = []
wakati (mwanzo < mwisho) {
matokeo = matokeo + [safu[mwanzo]]
mwanzo = mwanzo + 1
}
rudisha matokeo
}
fanya vunja = unda(safu, mwanzo, mwisho) {
fanya matokeo = []
wakati (mwanzo < mwisho) {
matokeo = matokeo + [safu[mwanzo]]
mwanzo = mwanzo + 1
}
rudisha matokeo
}
Unganisha
go
fanya unganisha = unda(kushoto, kulia) {
fanya matokeo = []
fanya kushotoUrefu = idadi(kushoto)
fanya kuliaUrefu = idadi(kulia)
fanya l = 0
fanya r = 0
wakati (l < kushotoUrefu && r < kuliaUrefu) {
kama (kushoto[l] < kulia[r]) {
matokeo = matokeo + [kushoto[l]]
l = l + 1
} sivyo {
matokeo = matokeo + [kulia[r]]
r = r + 1
}
}
andika(matokeo)
}
fanya unganisha = unda(kushoto, kulia) {
fanya matokeo = []
fanya kushotoUrefu = idadi(kushoto)
fanya kuliaUrefu = idadi(kulia)
fanya l = 0
fanya r = 0
wakati (l < kushotoUrefu && r < kuliaUrefu) {
kama (kushoto[l] < kulia[r]) {
matokeo = matokeo + [kushoto[l]]
l = l + 1
} sivyo {
matokeo = matokeo + [kulia[r]]
r = r + 1
}
}
andika(matokeo)
}
Pangilia na Unganisha
go
fanya ungaPangilia = unda(safu){
fanya urefu = idadi(safu)
andika("safu ni ", safu," yenye urefu ", urefu)
kama (urefu < 2) {
rudisha urefu
}
andika("urefu ni mkubwa kuliko au == 2", urefu > 1)
fanya kati = (urefu / 2)
andika("hatua ya kati ya hii safu ni ", mid)
fanya kushoto = vunja(safu, 0, kati)
fanya kulia = vunja(safu, kati, urefu)
andika("upande wa kushoto ni ", kushoto)
andika("upande wa kulia ni ", kulia)
fanya pangiliaKushoto = ungaPangilia(left)
fanya pangiliaKulia = ungaPangilia(right)
andika("safu ainishwa ya kushoto ni ", pangiliaKushoto)
andika("safu ainishwa ya kulis ni ", pangiliaKulia)
rudisha unganisha(pangiliaKushoto, pangiliaKulia)
}
fanya safu = [6, 5, 3, 1, 8, 7, 2, 4]
fanya safuAinishwa = ungaPangilia(safu)
andika(safuAinishwa)
fanya ungaPangilia = unda(safu){
fanya urefu = idadi(safu)
andika("safu ni ", safu," yenye urefu ", urefu)
kama (urefu < 2) {
rudisha urefu
}
andika("urefu ni mkubwa kuliko au == 2", urefu > 1)
fanya kati = (urefu / 2)
andika("hatua ya kati ya hii safu ni ", mid)
fanya kushoto = vunja(safu, 0, kati)
fanya kulia = vunja(safu, kati, urefu)
andika("upande wa kushoto ni ", kushoto)
andika("upande wa kulia ni ", kulia)
fanya pangiliaKushoto = ungaPangilia(left)
fanya pangiliaKulia = ungaPangilia(right)
andika("safu ainishwa ya kushoto ni ", pangiliaKushoto)
andika("safu ainishwa ya kulis ni ", pangiliaKulia)
rudisha unganisha(pangiliaKushoto, pangiliaKulia)
}
fanya safu = [6, 5, 3, 1, 8, 7, 2, 4]
fanya safuAinishwa = ungaPangilia(safu)
andika(safuAinishwa)