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
A 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.
- Sort input array using a O(n Log n) algorithm.
- 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