Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.51 KB | None | 0 0
  1. // CountSortForRadixSort O(n)
  2. func CountSortForRadixSort(A []int, d int, k int) {
  3. dNum := 1
  4. for i := 0; i < d; i++ {
  5. dNum *= k
  6. }
  7. c := make([]int, 11)
  8. for _, a := range A {
  9. c[a/dNum%k]++
  10. }
  11. for i := 1; i < 11; i++ {
  12. c[i] += c[i-1]
  13. }
  14. b := make([]int, len(A))
  15. for j := len(A) - 1; j >= 0; j-- {
  16. c[A[j]/dNum%k]--
  17. b[c[A[j]/dNum%k]] = A[j]
  18. }
  19. for i := range A {
  20. A[i] = b[i]
  21. }
  22. }
  23.  
  24. // RadixSort O(d(n + k))
  25. func RadixSort(A []int, d int, k int) {
  26. for i := 1; i < d+1; i++ {
  27. CountSortForRadixSort(A, i, k)
  28. }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement