快排思想很简单,就是每次选中一个元素作为基准,比其小的放到左边,比其大的放到右边,返回的是 左边元素+基准点+右边元素
再不断的迭代左边和右边,直到数据表中仅有一个元素
以前用C++写的是不开辟新的空间,所以实现上复杂一些;下面的简单在于,开辟了两个新的左右空间
def TwinsQuickSort(datalist):
if len(datalist)<=1:
return datalist
pivot=datalist[0]
left=[];right=[];
for i in range(len(datalist)):
if i==0:
continue;
else:
if datalist[i][0]<pivot[0]:
left.append(datalist[i])
else:
if datalist[i][0]>pivot[0]:
right.append(datalist[i])
else:
if datalist[i][1]<pivot[1]:
left.append(datalist[i])
else:
right.append(datalist[i])
return TwinsQuickSort(left) + [pivot] + TwinsQuickSort(right)
def QuickSort(datalist):
if len(datalist)<=1:
return datalist
pivot=datalist[0]
left=[];right=[];
for i in range(len(datalist)):
if i==0:
continue;
else:
if datalist[i]<pivot:
left.append(datalist[i])
else:
right.append(datalist[i])
return QuickSort(left) + [pivot] + (QuickSort(right))
#datalist=[6,8,1,4,6,7,37,25]
datalist=[[3, 1], [0, 2], [1, 0], [2, 3]]
result=TwinsQuickSort(datalist)
print result