Share

# Alternative Sorting In Golang

Home Â» Problem Solving Â» Arrays Â» Alternative Sorting In Golang

In this post article we are going to solve a problem using go programming language, before i tell you about the problem , in this problem we are going to use go sort package to first sort the array then we are going to solve the main problem, so without further ado let’s start.

## Problem

Given an array of integers, print the array in such a way that the first element is first maximum number and second element is first minimum number and so on.

Examples

```Input : arr[] = {6, 3, 1, 2, 4, 5, 7}
Output : 7 1 6 2 5 3 4

Input : arr[] = {1, 6, 9, 4, 3, 7, 8, 2}
Output : 9 1 8 2 7 3 6 4
```

simple solution is to first print maximum element, then minimum, then second maximum, and so on. Time complexity of this approach is O(n2).

An efficient solution involves following steps.

1. Sort input array using a O(n Log n) algorithm.
2. We maintain two pointers, one from beginning and one from end in sorted array. We alternatively print elements pointed by two pointers and move them toward each other.

## Implementation

```/*
Alternative sorting problem
EXAMPLE

Input : arr[] = {6, 3, 1, 2, 4, 5, 7}
Output : 7 1 6 2 5 3 4

Input : arr[] = {1, 6, 9, 4, 3, 7, 8, 2}
Output : 9 1 8 2 7 3 6 4

*/

package main

import (
"fmt"
"sort"
)

func alternativeSorting(arr []int) {
sort.Ints(arr)
fmt.Println("Sorted Array",arr)
left := 0
right := len(arr)-1
for left < right {
fmt.Printf("%d %d ",arr[right],arr[left])
left++
right--
}
if len(arr) % 2 != 0 {
fmt.Printf("%d ",arr[left])
}
}

func main() {
arr := []int{12, 1, 6, 4, 7, 10}
fmt.Println("Before",arr)
alternativeSorting(arr)
fmt.Println()
}
```
``````Output:

Before [1 12 4 6 7 10]
Sorted Array [1 4 6 7 10 12]
12 1 10 4 7 6``````

Time Complexity: O(n Log n)
Auxiliary Space : O(1), since no extra space has been taken.

In this article we have used golang’s sort package which helps to sort array of any data types, want’s to know more about go sort package checkout this

## Highlights

March 20, 2023

March 17, 2023

March 14, 2023

March 10, 2023

March 1, 2023

### Differences between sync.Map and map in Go

February 27, 2023

### Build a To-Do App with Local Storage using Vanilla JavaScript

February 24, 2023