fork download
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "math/rand"
  6. "time"
  7. "sort"
  8. )
  9.  
  10. func shuffled(len int) []int {
  11. rand.Seed(time.Now().UnixNano())
  12. arr := rand.Perm(len)
  13. for i,_ := range arr {
  14. arr[i]++
  15. }
  16. return arr
  17. }
  18.  
  19. func main() {
  20. arr := shuffled(1000)
  21. out := make(chan int)
  22. start := time.Now().UnixNano()
  23. for _,n := range arr {
  24. go func(i int) { time.Sleep(time.Duration(i) * time.Millisecond); out <- i }(n)
  25. }
  26. res := make([]int, 0, len(arr))
  27. for _ = range arr {
  28. res = append(res, <-out)
  29. }
  30. fmt.Println((time.Now().UnixNano() - start) / int64(time.Millisecond), sort.IntsAreSorted(res))
  31. }
  32.  
Success #stdin #stdout 0.02s 5160KB
stdin
Standard input is empty
stdout
1003 true