Python快速排序

快排思想很简单,就是每次选中一个元素作为基准,比其小的放到左边,比其大的放到右边,返回的是 左边元素+基准点+右边元素

再不断的迭代左边和右边,直到数据表中仅有一个元素

以前用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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值