Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Write a Golang program to sort a binary array in linear time
There are two methods in which we can solve this problem. Let’s check the first method.
Method 1
Examples
- Input Array = [1, 0, 1, 0, 1, 0, 0, 1] => [0, 0, 0, 0, 1, 1, 1, 1]
Approach to solve this problem
Step 1: Define a method that accepts an array.
Step 2: Count number of 0.
Step 3: Store 0 till count becomes 0 and store 1 at the remaining indexes.
Step 4: At the end, return the array.
Program
package main
import "fmt"
func binarySort(arr []int) []int{
count := 0
for i:=0; i<len(arr); i++{
if arr[i]==0{
count++
}
}
for j:=0; j<len(arr); j++{
if j<count{
arr[j] = 0
} else {
arr[j] = 1
}
}
return arr
}
func main(){
fmt.Println(binarySort([]int{1, 0, 1, 0, 1, 0, 0, 1}))
fmt.Println(binarySort([]int{1, 1, 1, 1, 1, 1, 1, 1}))
fmt.Println(binarySort([]int{0, 0, 0, 0, 0, 0, 0, 0}))
}
Output
[0 0 0 0 1 1 1 1] [1 1 1 1 1 1 1 1] [0 0 0 0 0 0 0 0]
Method 2
Now, let’s check the second method.
Approach to solve this problem
- Step 1: Define a method that accepts an array.
- Step 2: Declare the pivot element and its index j.
- Step 3: Iterate the given array. If the element is less than pivot, then swap and increase the pivot’s index.
- Step 4: At the end, return the array.
Program
package main
import "fmt"
func binarySort(arr []int) []int{
pivot := 1
index := 0
for i:=0; i<len(arr); i++ {
if arr[i]<pivot{
arr[i], arr[index] = arr[index], arr[i]
index++
}
}
return arr
}
func main(){
fmt.Println(binarySort([]int{1, 0, 1, 0, 1, 0, 0, 1}))
fmt.Println(binarySort([]int{1, 1, 1, 1, 1, 1, 1, 1}))
fmt.Println(binarySort([]int{0, 0, 0, 0, 0, 0, 0, 0}))
}
Output
[0 0 0 0 1 1 1 1] [1 1 1 1 1 1 1 1] [0 0 0 0 0 0 0 0]
Advertisements