当前位置:
首页 > temp > 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) class Stack(object): """栈""" def __init__(self): self.__items = [] def is_empty(self): """判断是否为空""" return self.__items == [] def push(self, item): """加入元素""" self.__items.append(item) def pop(self): """弹出元素""" return self.__items.pop() def peek(self): """返回栈顶元素""" return self.__items[len(self.__items)-1] def size(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()) class Queue(object): '''队列''' def __init__(self): self.__list=[] def addqueue(slef,item): #self.__list.append(item) self.__list.insert(0,item) def dequeue(self): return self.__list.pop() def is_empty(self): return self.__list==[] def size(self): return len(self.__list) class Dqueue(object): '''双端队''' def __init__(self): self.__list=[] def add_front(slef,item): self.__list.insert(0,item) def add_re(self,item): self.__list.insert(item) def dequeue(self): return self.__list.pop() def requeue(self): return self.__list.pop(0) def is_empty(self): return self.__list==[] def size(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=0 if 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=j for 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=j while i>0: if alist[i]<alist[i-1]: 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 in range(gap,n): i=j while i>0: if alist[i]<alist[i-gap]: alist[i],alist[i-gap]=alist[i-gap],alist[i] i-=gap else: break gap//=2 def quick_sort(alist,first,last):'''快速排序''' if first>=last: return mid_value=alist[first] low=first high=last while low<high: while low <high and alist[high]>=mid_value: high-=1 alist[low]=alist[high] while low <high and alist[low]<mid_value: low+=1 alist[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: return alist mid=n//2 left=me_sort(alist[:mid]) right=me_sort(alist[mid:]) left_point,right_porint=0,0 result=[] while left_point<len(left) and right_porint<len(right): if left[left_point] <right[right_porint]: result.append(left[left_point]) left_point+=1 else: result.append(right[right_porint]) right_porint+=1 result+=left[left_point:] result+=right[right_porint:] return result def binary_search(alist,item):#二分查找 递归 n=len(alist) if n>0: mid=n//2 if alist[mid]==item: return True elif item<alist[mid]: return binary_search(alist[:mid],item) else: return binary_search(alist[mid+1:],item) return False def brin_serce2(alist,item):#二分非递归 n=len(alist) first=0 lasr=n-1 while first <=lasr: mid = (first + lasr) // 2 if alist[mid]==item: return True elif item<alist[mid]: lasr=mid-1 else: first=mid+1 return False if __name__ == '__main__': listy=[54,67,76,23,34] print(brin_serce2(listy,55))
来源:https://www.cnblogs.com/leiziv5/p/7401353.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数