Go 并发排序

单机版外部排序

一、基础补充

2-1 Hello world网络版

(访问:localhost:8888)

2-2 Helloworld并发版

第一种

第二种

第三种

第四种

2-3 内部排序示例

 

3-1 归并排序算法

主要结构:

3-2 基础节点

3-3 归并节点

 

3-4 文件读写

 

生成随机数

ArraySource

支持分块

创建一个用于排序的源头,通过可变参数...传入设置的值,返回的时候注意要close(out)

InMemSort

创建一个内部排序函数,从内存中获取并利用sort.Ints(a)来排序。

使用:

Merge

针对多个源进行排序,与上面区别是输入源多了一个,需要判断

使用

ReaderSource

读取数据源,chunkSize是确认读取数据大小,如果读完就不读了。注意这里语句make([ ]byte,8)

WriteSink

写入数据

RandomSource

利用随机数生成数据

MergeN

搭建归并节点组

归并排序

 使用

外部排序整合小文件

使用:

具体实现:

运行结果(查看大小)

外部排序整合大文件

在pipeline0807里增加

(因为大文件一会读不玩,我们利用时间看下到底是怎么的)

在InMemSort中增加输出,并将out创建时候,改成1024

在Merge里增加输出

 在外部排序里面增加

在createPipeline调用init函数

修改主函数:计算机是4核的,因此参数为4比较划算,文件大小改为800000000比较慢,这里我采用较小的

输出大致为:

 

转载于:https://www.cnblogs.com/ycx95/p/9435901.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值