scala写快排
之前在一直学习的是java语言,众所周知,多年来一直使用Java来作为主要使用的语言,主要是因为它的代码通常可读性很强,对于大型的企业级项目,体现在代码和众多接口中的设计,能良好的反应项目的架构。但是,不得不承认,Java并不是一门纯粹的面向对象语言,static的存在以及基本数据类型的支持,都有悖OO的理念。除此之外,越来越感觉到,使用Java和丰富的资源虽然几乎能开发出任何目的的程序,但其繁琐的代码量,非常让人恼火。
而Scala是一门十分有趣又非常实用的语言,它以JVM为目标环境,将面向对象和函数式编程有机地结合在一起,带来独特的编程体验。它既有动态语言那样的灵活简洁,同时又保留了静态类型检查带来的安全保障和执行效率,加上其强大的抽象能力,既能处理脚本化的临时任务,又能处理高并发场景下的分布式互联网大数据应用,可谓能缩能伸。
下面我们就一个常见的快排算法来对比一下两种语言:
先是java:
public static void Quick_Sort(int[] arr, int begin, int end){ if(begin>end) return; int temp=arr[begin];//temp为基准位 int i=begin; int j=end; while(i<j) { while(arr[j]>=temp&&i<j)//右边的总比基准大 j--; while(arr[i]<=temp&&i<j)//左边的总比基准小 i++; if(j>i) { int x=arr[i]; arr[i]=arr[j]; arr[j]=x; } } arr[begin]=arr[i]; arr[i]=temp; Quick_Sort(arr,begin,i-1); Quick_Sort(arr,i+1,end); }
下面是scala实现:
def qsort(list: List[Int]):List[Int]=list match { case Nil=>Nil case ::(pivot,t)=>qsort(t.filter(_<=pivot)) ++ List(pivot) ++ qsort(t.filter(_>pivot)) }