Go 实现洗牌算法

shuffle算法,我把它叫做洗牌算法因为他和我们洗扑克牌的方式很像,它的目标正好与各种的sort算法相反,即把一个有序(或者无序)的一系列元素打乱,以满足需求。

如果你是python或者ruby程序员可能你觉得很简单,因为他们在语言层面上实现了很多很方便的函数,然而Go语言要想打乱数组或者切片中数据的顺序,需要自己实现的。

Ruby中有一个叫shuffle的方法:

Python也同样非常的简单:

简单粗暴 – 创建新的数组或者切片

其实我们可以用rand.Perm() 更为高效的实现

无需创建新的数组或者切片来实现洗牌算法

运行后发现你可以看到返回的数据已经被打乱了。

如果一个你使用的是切片且不知道切片的大小和容量,且不修改值传递的值,那么我们可以这么做。

 

Go 实现洗牌算法
Tagged on:         

发表评论

电子邮件地址不会被公开。 必填项已用*标注