兄弟连区块链教程Go语言排序与搜索切片
2018年时已过半,在今年的区块链热潮中,国内各家科技巨头均已粉墨登场,开始在这个新兴领域里抢占高地。但在具体布局细节上,几大巨头又各有不同,从中亦可窥见它们各自对区块链的重视程度和期许方向。
兄弟连Go语言全栈与区块链技术培训课程是由清华、微软和谷歌名师历时半年时间研发出的独一无二的体系化课程。课程涵盖9大学习阶段,及多个企业级项目实战和来自世界顶尖区块链比赛作品,并由以微软区块链最具价值专家尹成为代表的清华系区块链团队亲临授课,综合提升学员的职场竞争力。
Go语言标准库中提供了sort包对整型,浮点型,字符串型切片进行排序,检查一个切片是否排好序,使用二分法搜索函数在一个有序切片中搜索一个元素等功能。
在这里简单讲几个sort包中常用的函数
sort.Float64s(s) // 将[]float64按升序排列
sort.Float64AreSorted(s) // 如果[]float64是有序的就返回true
sort.Ints(s) // 将[]int按升序排列
sort.IntsAreSorted(s) // 如果[]int是有序的就返回true
sort.Strings(s) // 将[]string按升序排列
sort.StringsAreSorted(s) // 如果[]string是有序的就返回true
sort.IsSorted(s) //如果sort.interface 的值s是有序的,则返回true
sort.Search(size,fn) //在一个排序好的数组中根据函数签名为 func(int)bool 的函数 fn 进行搜索,返回第一个使得函数fn返回值为true的索引
sort.sort (s) //排序类型为sort.interface的切片s
在Go语言中,对字符串的排序都是按照字节排序,也就是说在对字符串排序时是区分大小写的。
二分搜索算法
Go语言中提供了一个使用二分搜索算法的sort.Search(size,fn)方法:每次只需要比较㏒₂n个元素,其中n为切片中元素的总数。
sort.Search(size,fn)函数接受两个参数:所处理的切片的长度和一个将目标元素与有序切片的元素相比较的函数,该函数是一个闭包,如果该有序切片是升序排列,那么在判断时使用 有序切片的元素 >= 目标元素。该函数返回一个int值,表示与目标元素相同的切片元素的索引。
在切片中查找出某个与目标字符串相同的元素索引
func main() {
var arrString = []string{"Hello","hello","asxs","sxas","Abc","ABC"}
fmt.Printf("Unsorted: %q\n",arrString)
sort.Strings(arrString)
fmt.Printf("Sorted: %q\n",arrString)
target := "hello"
i := sort.Search(len(arrString), func(i int) bool {
return arrString[i] >= target
})
if i
fmt.Println(i)
}
}
---output----
Unsorted: ["Hello" "hello" "asxs" "sxas" "Abc" "ABC"]
Sorted: ["ABC" "Abc" "Hello" "asxs" "hello" "sxas"]
4
高能预警,兄弟连教育区块链直播课程8月持续火爆来袭!
原价1188元的12节区块链进阶课程,现仅需1元!
还可免费领取《Go语言基础实战项目开发》与《Go语言高级实战项目开发》教材两本!!
限时限量!!先到先得!!
http://www.ydma.cn/open/course/24
关注兄弟连区块链技术公众号领取更多技术干货哦!!!
网上报名
新闻资讯
更多>>-
兄弟连“因材施教搭建桥梁”计划正式启动
2018-06-14
-
兄弟连PHP培训:高薪就业才是硬道理
2018-06-14
-
兄弟连北京安卓培训:万元高薪班级爆满
2018-06-14
-
25W高薪挑战安卓 零基础培训首选兄弟连
2018-06-14
-
兄弟连PHP教程发布 海量资源应有尽有
2018-06-14