二话不说上代码:
Scala:
def quickSort(xs: List[Int]): List[Int] = { if (xs.isEmpty) xs
else
quickSort(xs.filter(x=>x<xs.head)):::xs.head::quickSort(xs.filter(x=>x>xs.head)) }
Python:
def quick_Sort(a): if len(a) != 0:
leftSide = quick_Sort(filter(lambda x:x<a[0],a))
middle = [a[0]]
rightSide= quick_Sort(filter(lambda x:x>a[0],a))
return leftSide+middle+rightSide
else:
return a
但是发现如果数组中有重复元素,那么排序后会丢失
听取MercedesLv的意见后做如下修改:
Scala:
def quickSort(xs: List[Int]): List[Int] = {
if (xs.isEmpty) xs
else
quickSort(xs.drop(1).filter(x=>x<=xs.head)):::xs.head::quickSort(xs.filter(x=>x>xs.head)) }
Python:
def quick_Sort(a):
if len(a) != 0:
leftSide = quick_Sort(filter(lambda x:x<=a[0],a[1:]))
middle = [a[0]]
rightSide= quick_Sort(filter(lambda x:x>a[0],a))
return leftSide+middle+rightSide
else:
return a