go语言归并排序

2018-04-06  本文已影响0人  天天天向上
package main

import (
    "fmt"
    "sort"
)

func main() {
    p := InMemSort(arraySource(4,3,2,6,7,1,0,9))
    for {
        if num,ok := <- p;ok {
            fmt.Println(num)
        } else {
            break
        }
    }
}

func InMemSort(in <-chan int) <-chan int {
    out := make(chan int)
    go func() {
        a := []int{}
        for v := range in {
            a = append(a,v)
        }
        sort.Ints(a)
        for _,v := range a {
            out <- v
        }
        close(out)
    }()
    return out
}


func arraySource(a ...int) chan int {
    out := make( chan int)
    go func() {
        for _,v := range a {
            out <- v
        }
        close(out)
    }()
    return out
}
上一篇 下一篇

猜你喜欢

热点阅读