快排在python中可以这样实现:
#!/usr/bin/env/ python
def quickSort(aList):
xs=[]
smallerList=[]
biggerList=[]
if(len(aList)>1):
xs.append(aList[0])
for i in range(1,len(aList)):
if(aList[i]<=aList[0]):
smallerList.append(aList[i])
else:
biggerList.append(aList[i])
return quickSort(smallerList)+xs+quickSort(biggerList)
else:
return aList
在Haskell中的实现方法如下:
quickSort :: (Ord a) => [a] -> [a]
quickSort [] = []
quickSort (x:xs) = smallerSorted ++ [x] ++ biggerSorted
where smallerSorted = quickSort [a | a <- xs, a <= x]
biggerSorted = quickSort [a | a <- xs, a > x]
快排采用了分治的思想,其中最关键的步骤是数组重排。