#-*- 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))