// This program rearranges an array into a zig-zag pattern, where the elements
// alternate between being smaller and larger than their neighbors
// a < b > c < d > e < f > g...
// 3 < 5 > 1 < 9 > 6 < 7 > 2 < 4
fun rearrangeIntoZigZag(arr: IntArray) {
for (i in 0 until arr.lastIndex) {
val shouldSwap =
(i % 2 == 0 && arr[i] > arr[i + 1]) ||
(i % 2 == 1 && arr[i] < arr[i + 1])
if (shouldSwap) {
val temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
}
fun main() {
val arr = intArrayOf(3, 5, 1, 7, 9, 6, 4, 2)
rearrangeIntoZigZag(arr)
println(arr.joinToString(prefix = "[", postfix = "]"))
}
/*
run:
[3, 5, 1, 9, 6, 7, 2, 4]
*/