import "fmt"
func heightChecker(heights []int) int {
var bkp []int
var temp []int
c := 0
for ;c < len(heights);{
temp = append(temp, 0)
bkp = append(bkp, heights[c])
c++
}
sort(heights, temp, 0, len(heights)-1)
fmt.Println(heights)
c = 0
cnt := 0
for ;c < len(heights);c++{
if heights[c] != bkp[c]{
cnt++
}
}
return cnt
}
func merge(arr []int, temp []int, left int, mid int, right int) {
i := left
j := mid
k := left
for ;i < mid && j <= right;{
if arr[i] <= arr[j]{
temp[k] = arr[i]
k++
i++
} else {
temp[k] = arr[j]
k++
j++
}
}
for ;i < mid;{
temp[k] = arr[i]
k++
i++
}
for ;j <= right;{
temp[k] = arr[j]
k++
j++
}
for m := left;m < right+1;m++{
arr[m] = temp[m]
}
}
func sort(arr []int, temp []int, left int, right int) {
if left < right{
mid := int((left+right)/2)
sort(arr, temp, left, mid)
sort(arr, temp, mid+1, right)
merge(arr, temp, left, mid+1, right)
}
}