cocktailSort <- function(arr) {
n <- length(arr)
swapped <- TRUE
beg <- 1
end <- n - 1
while (swapped) {
swapped <- FALSE
# Forward pass (left to right)
for (i in seq(beg, end)) {
if (arr[i] > arr[i + 1]) {
# Swap arr[i] and arr[i + 1]
temp <- arr[i]
arr[i] <- arr[i + 1]
arr[i + 1] <- temp
swapped <- TRUE
}
}
# If no swaps occurred in the forward pass, the array is sorted
if (!swapped) {
break
}
swapped <- FALSE
end <- end - 1
# Backward pass (right to left)
for (i in seq(end, beg, by = -1)) {
if (arr[i] > arr[i + 1]) {
# Swap arr[i] and arr[i + 1]
temp <- arr[i]
arr[i] <- arr[i + 1]
arr[i + 1] <- temp
swapped <- TRUE
}
}
beg <- beg + 1
}
return(arr)
}
# Example Usage
unsorted_array <- c(38, 27, 43, 3, 9, 82, 10)
cat("Unsorted Array: ", unsorted_array, "\n")
## Unsorted Array: 38 27 43 3 9 82 10
# Call the Cocktail Sort function to sort the array
sorted_array <- cocktailSort(unsorted_array)
cat("Sorted Array: ", sorted_array, "\n")
## Sorted Array: 3 9 10 27 38 43 82
# Example: The 'unsorted_array' is sorted using Cocktail Sort