- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- 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