给自己的爱人做网站,wordpress模板框架,打广告去哪个平台,html5餐饮美食订餐微官网wap手机网站模板整站下载Golang 洗牌算法#xff08;乱序算法#xff09;#xff1b;需求背景#xff1a;从一个文件下下读取所有文件#xff0c;获取他们的名字#xff0c; 将名字乱序排序#xff0c;按着乱序后的序列#xff0c;通过名字去找到文件#xff0c;再上传#xff0c;以达到上传…Golang 洗牌算法乱序算法需求背景从一个文件下下读取所有文件获取他们的名字 将名字乱序排序按着乱序后的序列通过名字去找到文件再上传以达到上传文件的序列据原始序列相比是乱序的。
package srcimport (fmtio/ioutilmath/randostime
)// Shuffle ...
// Description:洗牌算法乱序算法需求背景从一个文件下下读取所有文件获取他们的名字
// 将名字乱序排序按着乱序后的序列通过名字去找到文件再上传以达到上传文件的序列据原始序列相比是乱序的。
func Shuffle() {var testFunc1 func() {dir, err : os.ReadDir(D:\\sorttest)if err ! nil {fmt.Println(err)}var total len(dir)var originOrder make([]string, total)var shuffledOrder make([]string, total)for i, info : range dir {originOrder[i] info.Name()}fmt.Println(originOrder:\n, originOrder)fmt.Println(--------- start shuffle Func1 【 Fisher-Yates Shuffle 】 ----------)rand.Seed(time.Now().UnixNano())var shuffleFunc1 func() {for i : total; i 0; i-- {j : rand.Intn(i)shuffledOrder[i-1] originOrder[j] // 将随机下标对应的数值取出 倒插进新数组中originOrder append(originOrder[0:j], originOrder[j1:]...) // 删除已经取出的值不删的话 再次随机到此下标 会 取到相同的值//fmt.Println(------processing----\n, shuffledOrder)}}shuffleFunc1()fmt.Println(originOrder:\n, originOrder)fmt.Println(shuffledOrder:\n, shuffledOrder)}var testFunc2 func() {dir, err : ioutil.ReadDir(D:\\sorttest)if err ! nil {fmt.Println(err)}var total len(dir)var originOrder make([]string, total)for i, info : range dir {originOrder[i] info.Name()}fmt.Println(originOrder:\n, originOrder)fmt.Println(-------- start shuffle Func2 【 Knuth-Durstenfeld Shuffle 】---------)rand.Seed(time.Now().UnixNano())var shuffleFunc2 func() {for i : total - 1; i 0; i-- {j : rand.Intn(i)originOrder[i], originOrder[j] originOrder[j], originOrder[i]}}shuffleFunc2()fmt.Println(shuffledOrder:\n, originOrder)}testFunc1()fmt.Println(\n\n\n\n\n\n)testFunc2()
} originOrder:[0.json 1.json 10.json 11.json 12.json 13.json 14.json 2.json 3.json 4.json 5.j
son 6.json 7.json 8.json 9.json]
--------- start shuffle Func1 【 Fisher-Yates Shuffle 】 ----------
originOrder:[]
shuffledOrder:[8.json 11.json 12.json 2.json 3.json 1.json 6.json 14.json 0.json 4.json 10.js
on 5.json 13.json 9.json 7.json]originOrder:[0.json 1.json 10.json 11.json 12.json 13.json 14.json 2.json 3.json 4.json 5.j
son 6.json 7.json 8.json 9.json]
-------- start shuffle Func2 【 Knuth-Durstenfeld Shuffle 】---------
shuffledOrder:[2.json 14.json 7.json 10.json 4.json 8.json 11.json 5.json 12.json 0.json 1.js
on 3.json 13.json 9.json 6.json]