JAVA中的快速排序
import java.util.Arrays;
public class QuitSort {
public static void main(String[] args) {
int[] sum={56,33,45,21,34,67,895,23,0,121,2121,33,22,44,56};
quickSort01(sum, 0, sum.length-1);
System.out.println(Arrays.toString(sum));
}
public static void quickSort01(int[]arr,int left, int right) {
if(left>right) {
return ;
}else {
{
//确定分界线位置的方法
int index = getMarkIndex(arr,left,right);
//左侧开始递归
quickSort01(arr, left, index-1);
//右侧递归
quickSort01(arr, index+1, right);
}
}
}
private static int getMarkIndex(int[] arr, int left, int right) {
//确定分界线的值
int key =arr[left];
while(left<right) {
//从右向左
while (arr[right]>=key&&left<right) {
right--;
}
//交换位置
arr[left]=arr[right];
//从左向右
while(arr[left]<=key&&left<right) {
left++;
}
arr[right]=arr[left];
}
arr[right] = key;
return left;
}
}
Scala中的快速排序
package com.aura.scala.day02
object QuitSort {
def main(args: Array[String]): Unit = {
var arr = Array(3,6,1,9,4,2,7,5,8,10,15,0,13)
println("排序前:"+arr.mkString("[",",","]"))
println("排序后:"+sort1(arr.toList))
}
def sort1(list: List[Int]):List[Int]={
list match {
case Nil => Nil//空值
case List() => List()//输入集合返回集合
case head :: tail => //将集合分为head和tail两部分,head为第一个元素,tail为后面的元素
val(left,right)=tail.partition(_< head)
//将集合按照与head比较大小的结果分别分为两个集合,left存放比head小的元素,right存放比head大的元素
sort1(left) ::: head :: sort1(right)
/*将left进行递归排序,直到最后一个元素,然后利用list的拼接,将单个拍好序的元素拼接起来,
其中,每次的head都在中间,“:::”标识拼接集合“::”标识将right集合插入拼接之后的集合的末尾*/
}
}
}
两者的比较
虽然java和Scala都可以实现快速排序,但是从代码量上来可以直观的看出,利用Scala编写代码的简洁方便,所以,Scala编程语言的使用较为Java更加方便。