Python 快速排序 堆排序——Python实现一些算法持续更新

大四了为了追我喜欢的姑娘,我想找份北京的工作,可实力略弱,但我会学,现在恶补算法,看了好多大牛的Blog,自己也应该有点产出,回馈大家,让自由和共享继续

快速排序:

<span style="color:#660000;">#-*-coding:utf-8-*-
'''Quick Sort write by miss chu '''
def quickSort(L,start,end):
	if start>=end:
		return
	start_=start
	end_=end
	pivot = L[start_]
	while start_<end_:
		while (start_<end_)and(L[end_]>=pivot):
			end_-=1
		if start_<end_:
			L[start_] = L[end_]
			start_+=1
		while (start_<end_)and(L[start_]<=pivot):
			start_+=1
		if start_<end_:
			L[end_] = L[start_]
			end_-=1
	L[start_] = pivot
	quickSort(L,start,start_-1)
	quickSort(L,start_+1,end)
def swap(a,b):
	return b,a
if __name__ == '__main__':
	print "Quick Sort"
	numlist = [5,9,2,4,1,7,3,6,8]
	quickSort(numlist,0,len(numlist)-1)
	print numlist</span>
堆排序:

#-*-conding:utf-8-*-
"""Heap Sort by nianchu!"""
def getLeftChild(i):
	return 2*i+1
def buildHeap(L,i,len): #At this place we build a big heap
	while i<=len and getLeftChild(i)<=len:
		temp = L[i]
		child = getLeftChild(i)
		if child+1<=len and L[child+1]>L[child] :
			child+=1
		if L[child]>temp:
			L[i],L[child]=L[child],L[i]
		i=child
def returnBigHeap(L,len): #And now we make a big heap and then we make L a list whos value is more and moer bigger
	i = len/2
	while i>=0:
		buildHeap(L,i,len)
		i-=1
	j=len
	while j>0:
		L[0],L[j] = L[j],L[0]
		j-=1
		buildHeap(L,0,j)
if __name__ == '__main__':
	print "Heap Sort"
	l = [1,5,6,9,4,2,3,7,8]
	returnBigHeap(l,len(l)-1)
	print l

归并排序:

<span style="font-size:14px;">#-*-coding:utf-8-*-
def merge(list):
	if len(list)<=1:
		return list
	mid=len(list)/2
	left=merge(list[:mid])
	right=merge(list[mid:])
	return mergeCore(left,right)
def mergeCore(left,right):
	result=[]
	i=0
	j=0
	while i<len(left) and j<len(right):
		if left[i]<right[j]:
			result.append(left[i])
			i+=1
		else:
			result.append(right[j])
			j+=1
	result+=left[i:]
	result+=right[j:]	
	return result
if __name__ == '__main__':
	list = [1,4,3,2,7,6,5,9,8,0]
	print merge(list)
	#print list</span>


亡羊补牢为时未晚,学习算法学习coding学安全不是一朝一夕的事情,持之以恒。

期待一份北京的工作

————本篇Blog会持续更新,如有批评建议欢迎指正,共同进步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值