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

Join Our Newsletter!

Join our newsletter to get our latest ebook "Ultimate JavaScript Cheat-Sheet", and Tips, Articles..

We don’t spam! Read our privacy policy for more info.

Join Our Newsletter!

Join our newsletter to get our latest ebook "Ultimate JavaScript Cheat-Sheet", and Tips, Articles..

We don’t spam! Read our privacy policy for more info.