# Odd-Even Sort Function
# Sorts an input vector in-place using the Odd-Even Sort algorithm.
# Parameters:
# - arr: Input vector to be sorted.
# Returns:
# - Sorted vector.
odd_even_sort <- function(arr) {
  n <- length(arr)
  sorted <- FALSE
  while (!sorted) {
    sorted <- TRUE
    
    # Odd-Even Sort (Phase 1 - Odd)
    for (i in seq(1, n - 1, by = 2)) {
      if (arr[i] > arr[i + 1]) {
        temp <- arr[i]
        arr[i] <- arr[i + 1]
        arr[i + 1] <- temp
        sorted <- FALSE
      }
    }
    
    # Odd-Even Sort (Phase 2 - Even)
    for (i in seq(2, n - 1, by = 2)) {
      if (arr[i] > arr[i + 1]) {
        temp <- arr[i]
        arr[i] <- arr[i + 1]
        arr[i + 1] <- temp
        sorted <- FALSE
      }
    }
  }
  return(arr)
}

# Example usage:
elements_vec <- c(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)
odd_even_sorted_vec <- odd_even_sort(elements_vec)
print(odd_even_sorted_vec)
##  [1] 1 1 2 3 3 4 5 5 5 6 9