使用GOLANG实现猴子排序

使用GOLANG实现猴子排序,第1张

概述实现方法(一) 利用rand函数进行随机输出,代码如下: package mainimport "fmt"import "math/rand"import "time"//确定一个切片是否是从大到小排列的,如果是返回“真”,不是则返回“假”。func isOrdered(list []int) bool { for i := 1; i < len(list); i++ { 实现方法(一)
利用rand函数进行随机输出,代码如下: @H_404_11@

package mainimport "fmt"import "math/rand"import "time"//确定一个切片是否是从大到小排列的,如果是返回“真”,不是则返回“假”。func isOrdered(List []int) bool {    for i := 1; i < len(List); i++ {        if List[i-1] > List[i] { //如果存在前一个元素大于后一个,则返回“假”            return false        }    }    return true}//让切片中的元素随机排列func randList(List []int) {    duplicateList := make([]int,len(List))    copy(duplicateList,List)        //用copy函数进行切片复制,这样下面修改源切片(List)才不会影响到切片副本(duplicateList)    rand.Seed(time.Now().UnixNano()) //使用当前的UNIX时间作为种子,不同的种子才能生成不同的随机值    index := rand.Perm(len(List))    //使用rand.Perm(n)函数生成一个[0:n)的随机切片,并按照随机切片中的元素顺序对源切片进行排序    for i,k := range index {        List[i] = duplicateList[k]    }}func main() {    List := []int{1,4,3,6,9,7,2,8,5,0}    count := 0    for {        if isOrdered(List) {            fmt.Printf("\t排序完成!\n\t已排序%v次。\n\t排序结果为 %v\n",count,List)            break        } else {            randList(List)            count++        }    }}
@H_404_11@实现方法(二)
利用map每次的输出为随机值进行排序(实际发现这种方法不靠谱,其中几个结果的出现频率特别高,经常重复,等了很久也不能输出正确结果)
代码如下:

package mainimport (    "fmt")//将一个切片转换为map,其中切片的元素的值为map的key,map的value统一为0func List2map(List []int) map[int]int {    m := make(map[int]int)    for _,v := range List {        m[v] = 0    }    return m}//将map的key输出为切片,map的输出是无序的,所以每次的输出都应该是随机的。func map2List(m map[int]int) []int {    List := []int{}    for i := range m {        List = append(List,i)    }    return List}//确定一个切片是否是从大到小排列的,如果是返回“真”,不是则返回“假”。func isOrdered(List []int) bool {    for i := 1; i < len(List); i++ {        if List[i-1] > List[i] { //如果存在前一个元素大于后一个,则返回“假”            return false        }    }    return true}func main() {    List := []int{3,1}    m := List2map(List)    count := 0    for {        if isOrdered(List) {            fmt.Printf("\t排序完成!\n\t已排序%v次。\n\t排序结果为 %v\n",List)            break        } else {            List = map2List(m)            fmt.Println(List)            count++        }    }}
总结

以上是内存溢出为你收集整理的使用GOLANG实现猴子排序全部内容,希望文章能够帮你解决使用GOLANG实现猴子排序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1269813.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存