<算法导论>思考7

7-2
a.如果所有元素都相同,那么时间复杂度是O(n^2)
b.

def partition(A,p,r):
	x=A[p]
	low=p
	high=p
	for j in range(p+1,r):
		if A[j]<x:
			y=A[j]
			A[j]=A[high+1]
			A[high+1]=A[low]
			A[low]=y
			low=low+1
			high=high+1
		elif A[j]==x:
			swap(A[high+1],A[j])  # swap函数要自己写
			high=high+1
		return low,high

c.

def quicksort(A,p,r):
	if p<r:
		(low,high)=partition(A,p,r)
		qicksort(A,p,low-1)
		quicksort(A,high+1,r)

7.4
a.
此题中的代码与书中的例子的区别只在循环的最后一行,而题目中的代码在第二次迭代时,可以完成书中的最后一行的作用,所以可以完成排序。
b.
当输入数组已经排好序时,递归的深度是 Θ ( n ) \Theta(n) Θ(n)
c.

def quick_sort(A,p,r):
	while p<r:
		q=partition(A,p,r)
		if q<int((p+r)/2):
			quick_sort(A,p,q-1)
			p=q+1
		else:
			quick_sort(A,q+1,r)
			r=q-1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值