go语言归并排序

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
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容