counting sort added

pull/4/head
0xAX 10 years ago
parent 46b32e8b0e
commit 770d727a5a

3
.gitignore vendored

@ -31,4 +31,5 @@ sorting/gnome_sort
sorting/quick_sort
sorting/comb_sort
sorting/odd_even_sort
sorting/heap_sort
sorting/heap_sort
sorting/counting_sort

@ -26,6 +26,11 @@ alghoritms
* comb sort
* odd/even sort
* heap sort
* counting sort
#### Searching
#### Data structures
contribution
------------

@ -0,0 +1,52 @@
package main
/*
* Counting sort - https://en.wikipedia.org/wiki/Counting_sort
*/
import "fmt"
import "github.com/0xAX/go-algorithms"
func getK(arr []int) int {
if len(arr) == 0 {
return 1
}
k := arr[0]
for _, v := range arr {
if v > k {
k = v
}
}
return k+1
}
func main(){
arr := utils.RandArray(10)
fmt.Println("Initial array is:", arr)
fmt.Println("")
k := getK(arr)
array_of_counts := make([]int, k)
for i:= 0; i < len(arr); i++ {
array_of_counts[arr[i]] += 1
}
for i, j := 0, 0; i < k; i++ {
for {
if array_of_counts[i] > 0 {
arr[j] = i
j += 1
array_of_counts[i] -= 1
continue
}
break
}
}
fmt.Println("Sorted array is: ", arr)
}
Loading…
Cancel
Save