题目
对于一个int数组,请编写一个快速排序算法,对数组元素排序。
给定一个int数组A及数组的大小n,请返回排序后的数组。
测试样例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
思路
找到一个数,确定最终位置,递归找到所有数字的最终位置。
代码
# -*- coding:utf-8 -*-
class QuickSort:
def partition(self, A, first, last):
tmp = A[first]
firstIndex = first
while first <= last:
while first <= last and A[first] <= tmp: first += 1
while first <= last and A[last] > tmp: last -= 1
if first <= last: A[first], A[last] = A[last], A[first]
A[firstIndex], A[last] = A[last], A[firstIndex]
return last
def sort(self, A, first, last):
if first >= last: return
part = self.partition(A, first, last)
self.sort(A, first, part - 1)
self.sort(A, part + 1, last)
def quickSort(self, A, n):
# write code here
self.sort(A, 0, n - 1)
return A