DEV Community

Kuldeep Singh
Kuldeep Singh

Posted on • Edited on • Originally published at programmingeeksclub.com

1

Alternative Sorting in Golang

In this article we are going to solve a problem using go programming language, and the supporting package we are going to use in the code is sort package of golang which is helpful for sorting strings,arrays etc.

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
Enter fullscreen mode Exit fullscreen mode

There are two ways we can print the number in the required order.

  1. 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).

  2. An efficient solution involves following steps.

So we are going to implement the efficient solution in this.

Approach

  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.
/* 
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()
}
Enter fullscreen mode Exit fullscreen mode

Output:

Before [1 12 4 6 7 10]
Sorted Array [1 4 6 7 10 12]
12 1 10 4 7 6
Enter fullscreen mode Exit fullscreen mode

you can visit my personal blog for this type of content.

Thanks for Reading

Billboard image

Synthetic monitoring. Built for developers.

Join Vercel, Render, and thousands of other teams that trust Checkly to streamline monitor creation and configuration with Monitoring as Code.

Start Monitoring

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay