Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import "fmt"
- func dummy(ch chan int, arr []int) {
- for _, v := range arr {
- ch <- v
- }
- close(ch)
- }
- func merge(a chan int, b chan int) {
- v1, ok1 := <-a
- v2, ok2 := <-b
- for ok1 && ok2 {
- if v1 == v2 {
- v1, ok1 = <-a
- v2, ok2 = <-b
- continue
- }
- if v1 < v2 {
- fmt.Printf("%d ", v1)
- v1, ok1 = <-a
- }
- if v2 < v1 {
- fmt.Printf("%d ", v2)
- v2, ok2 = <-b
- }
- }
- for ok1{
- fmt.Printf("%d ", v1)
- v1, ok1 = <-a
- }
- for ok2{
- fmt.Printf("%d ", v2)
- v2, ok2 = <-b
- }
- }
- func main() {
- ch1 := make(chan int)
- ch2 := make(chan int)
- arr1 := []int{1, 5, 7, 8, 23, 24, 50}
- arr2 := []int{1, 3, 6, 8, 23}
- go dummy(ch1, arr1)
- go dummy(ch2, arr2)
- merge(ch1, ch2)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement