Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 0.74 KB | None | 0 0
  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func dummy(ch chan int, arr []int) {
  6.     for _, v := range arr {
  7.         ch <- v
  8.     }
  9.     close(ch)
  10. }
  11.  
  12. func merge(a chan int, b chan int) {
  13.     v1, ok1 := <-a
  14.     v2, ok2 := <-b
  15.     for ok1 && ok2 {
  16.         if v1 == v2 {
  17.             v1, ok1 = <-a
  18.             v2, ok2 = <-b
  19.             continue
  20.         }
  21.         if v1 < v2 {
  22.             fmt.Printf("%d ", v1)
  23.             v1, ok1 = <-a
  24.         }
  25.         if v2 < v1 {
  26.             fmt.Printf("%d ", v2)
  27.             v2, ok2 = <-b
  28.         }
  29.     }
  30.  
  31.     for ok1{
  32.         fmt.Printf("%d ", v1)
  33.         v1, ok1 = <-a
  34.     }
  35.  
  36.     for ok2{
  37.         fmt.Printf("%d ", v2)
  38.         v2, ok2 = <-b
  39.     }
  40. }
  41.  
  42. func main() {
  43.     ch1 := make(chan int)
  44.     ch2 := make(chan int)
  45.  
  46.     arr1 := []int{1, 5, 7, 8, 23, 24, 50}
  47.     arr2 := []int{1, 3, 6, 8, 23}
  48.  
  49.     go dummy(ch1, arr1)
  50.     go dummy(ch2, arr2)
  51.  
  52.     merge(ch1, ch2)
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement