simple selectionSort is not working
- doSort - not working
- doSortWorking method is working properly
Here doSort method is not working just because of manipulating "minimum" inside the for loop, can someone tell me what is the root cause, i couldnt understand the root cause
object SelectionSort extends App {
val unSortedArray = ArrayBuffer(5, -1, 8, 4, 6, 21, 4, 5, -0, 0)
def doSort (ary: ArrayBuffer[Int], startIndex: Int, endIndex: Int) = {
var minimum = 0
for {
index <- startIndex to endIndex
_ = minimum = ary(index)
loopIndex <- index until endIndex
} {
if (minimum > ary(loopIndex + 1)) {
minimum = ary(loopIndex + 1)
val swap = ary(index)
ary(index) = ary(loopIndex + 1)
ary(loopIndex + 1) = swap
}
}
}
def doSortWorking (ary: ArrayBuffer[Int], startIndex: Int, endIndex: Int) = {
var minimum = 0
for {
index <- startIndex to endIndex
loopIndex <- index until endIndex
} {
minimum = ary(index)
if (minimum > ary(loopIndex + 1)) {
minimum = ary(loopIndex + 1)
val swap = ary(index)
ary(index) = ary(loopIndex + 1)
ary(loopIndex + 1) = swap
}
}
}
doSort(unSortedArray, 0, unSortedArray.size - 1)
println(unSortedArray)
doSortWorking(unSortedArray, 0, unSortedArray.size - 1)
println(unSortedArray)
}