python算法学习代码_python 算法学习部分代码记录篇章1

#-*- coding: utf-8 -*-#@Date : 2017-08-19 20:19:56#@Author : lileilei

‘‘‘那么算法和数据结构是什么呢,答曰兵法‘‘‘

‘‘‘a+b+c=1000 and a*a+b*b=c*c 求a,b,c‘‘‘

#import time#start_time=time.time()#for a in range(1000):#使用枚举法#for b in range(1000):#for c in range(1000):#if a+b+c==1000 and a*a+b*b==c*c:#print(a,b,c)#print(time.time()-start_time)#import time #方法2#start_time=time.time()#for a in range(1000):#for b in range(1000):#c=1000-a-b#if a+b+c==1000 and a*a+b*b==c*c:#print(a,b,c)#print(time.time()-start_time)

classStack(object):"""栈"""

def __init__(self):

self.__items =[]defis_empty(self):"""判断是否为空"""

return self.__items ==[]defpush(self, item):"""加入元素"""self.__items.append(item)defpop(self):"""弹出元素"""

return self.__items.pop()defpeek(self):"""返回栈顶元素"""

return self.__items[len(self.__items)-1]defsize(self):"""返回栈的大小"""

return len(self.__items)#if __name__ == "__main__":#stack = Stack()#stack.push("hello")#stack.push("world")#stack.push("itcast")#print (stack.size())#print (stack.peek())#print (stack.pop())#print (stack.pop())#print (stack.pop())

classQueue(object):‘‘‘队列‘‘‘

def __init__(self):

self.__list=[]defaddqueue(slef,item):#self.__list.append(item)

self.__list.insert(0,item)defdequeue(self):return self.__list.pop()defis_empty(self):return self.__list==[]defsize(self):return len(self.__list)classDqueue(object):‘‘‘双端队‘‘‘

def __init__(self):

self.__list=[]defadd_front(slef,item):

self.__list.insert(0,item)defadd_re(self,item):

self.__list.insert(item)defdequeue(self):return self.__list.pop()defrequeue(self):return self.__list.pop(0)defis_empty(self):return self.__list==[]defsize(self):return len(self.__list)def buule_sor(alist):#冒泡

n=len(alist)for i in range(n-1):for j in range(n-1-i):

count=0if alist[j]>alist[j+1]:

alist[j],alist[j+1]=alist[j+1],alist[j]

count+=1

if 0==count:return

def select_sort(alist):#选择排序

n=len(alist)for j in range(n-1):

min=jfor i in range(j+1,n):if alist[min] >alist[i]:

min=i

alist[j],alist[min]=alist[min],alist[j]def insert_sort(alist):‘‘‘插入排序‘‘‘n=len(alist)for j in range(1,n):

i=jwhile i>0:if alist[i]

alist[i],alist[i-1]=alist[i-1],alist[i]

i-=1

def shell_sort(alist):‘‘‘希尔排序‘‘‘n=len(alist)

gap=n//2

while gap>0:for j inrange(gap,n):

i=jwhile i>0:if alist[i]

alist[i],alist[i-gap]=alist[i-gap],alist[i]

i-=gapelse:breakgap//=2

def quick_sort(alist,first,last):‘‘‘快速排序‘‘‘

if first>=last:returnmid_value=alist[first]

low=first

high=lastwhile low=mid_value:

high-=1alist[low]=alist[high]while low

low+=1alist[high]=alist[low]

alist[low]=mid_value

quick_sort(alist,first,low-1)

quick_sort(alist,low+1,last)def me_sort(alist):‘‘‘归并排序‘‘‘n=len(alist)if n<=1:returnalist

mid=n//2left=me_sort(alist[:mid])

right=me_sort(alist[mid:])

left_point,right_porint=0,0

result=[]while left_point

result.append(left[left_point])

left_point+=1

else:

result.append(right[right_porint])

right_porint+=1result+=left[left_point:]

result+=right[right_porint:]returnresultdef binary_search(alist,item):#二分查找 递归

n=len(alist)if n>0:

mid=n//2

if alist[mid]==item:returnTrueelif item

n=len(alist)

first=0

lasr=n-1

while first <=lasr:

mid= (first + lasr) // 2

if alist[mid]==item:returnTrueelif item

lasr=mid-1

else:

first=mid+1

returnFalseif __name__ == ‘__main__‘:

listy=[54,67,76,23,34]print(brin_serce2(listy,55))

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值