真的是越来越喜欢Scala了,简洁的语法,清新的风格是我对Scala的印象,感觉使用Scala进行编程真的非常的方便,从Scala的设计思想也能得到不少的启发,就比如下面的一个对数字数组快速排序的sort(Array[Int])方法,你以前想到过通过这样的方式实现吗?
10余年的茫崖网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整茫崖建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“茫崖网站设计”,“茫崖网站推广”以来,每个客户项目都认真落实执行。
编辑推荐:Scala编程语言专题
Scala数组排序实现代码
- /**
- * 快速排序的例子2
- * @author VWPOLO
- * < p>2009-8-12< /p>
- */
- object TestQuickSort2 {
- def main(args : Array[String]) : Unit = {
- var arrays = Array(123,343,5435,23,3213);
- Console.println("排序前的结果");
- arrays.foreach((array: Int ) => println(array))
- arrays = sort(arrays);
- Console.println("排序后的结果");
- arrays.foreach((array: Int ) => println(array))
- }
- def sort(xs: Array[Int]):Array[Int] = {
- if(xs.length < = 1)
- xs;
- else {
- val pivot = xs(xs.length /2);
- Array.concat(
- sort(xs filter (pivot >)),
- xs filter (pivot ==),
- sort(xs filter (pivot < ))
- )
- }
- }
- }
Scala数组排序快速实现代码点评
sort(Array[Int])方法通过简明的方式完成了传统的快速排序功能:
1、判断参数数组是否为空?如果为空说明排序完成,直接方法参数。
2、如果给定的参数数字不为空,取得数组的中间数。
3、根据中间数对参数数组进行拆分,通过调用Array的filter(p: A => Boolean)方法对数组进行分区并生成一个新的数组,"xs filter (pivot >)" 生成一个新的数组只包含小于pivot的数字,"xs filter (pivot ==)"里面的数组只包含等于pivot的数组,"xs filter (pivot < )"则包含大于pivot的数字,通过sort方法的迭代,完成了排序过程。
4、通过Array.concat方法合并多个数组,返回排序后的结果就行了。
sort方法指定了返回值但是方法块中没有"return" 语言,其实加不加都无所谓,Scala编译器可以自动进行判断。
Scala数组排序的优点
这种方式和传统的快速排序方法在时间复杂度和空间复杂度相似,但是代码却大大的简化了,不信你用Java写一个对数字数组快速的排序方法(要自己写,使用Collections.sort(List< T>)方法可不算啊)。
Scala引起了大家的大量关注,一些人拿Scala的缺点和Java的优点进行比较进行批评Scala,"另一些人拿Java缺点和Scala优点进行比较来拥护Scala,然后两队人在论坛上打起了口水仗,Scala又不是钞票,当然不能够取悦所有人。
本文来自vwpolo的博客《Scala 的快速排序》一文。
【相关阅读】
网站题目:Scala数组排序的快速实现
本文来源:http://www.shufengxianlan.com/qtweb/news0/54150.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联