您的位置:首页 > 编程语言 > Python开发

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

2014-09-27 17:02 756 查看
大四了为了追我喜欢的姑娘,我想找份北京的工作,可实力略弱,但我会学,现在恶补算法,看了好多大牛的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会持续更新,如有批评建议欢迎指正,共同进步
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐