算法与数据结构
python数据算法与数据结构
小书包装代码
这个作者很懒,什么都没留下…
展开
-
1.算法之顺序查找与二分查找
1.顺序查找;def liner_search(l1,target): #线性查找 for ind,val in enumerate(l1): if val == target: return ind else: return Noneprint(liner_search([3,5,7,9],5))2.二分查找def binary_search(l1,target): left=0 right=len(l1)原创 2022-04-05 19:15:45 · 47 阅读 · 0 评论 -
2.算法之排序lower三贱客(冒泡、选择和插入排序)
1.冒泡排序法import randomdef bubble_sort(li): #时间复杂度o(n的平方) for i in range(len(li)-1): #第i趟 exchange=False for j in range(len(li)-i-1): if li[j]>li[j+1]: #升序排列,如果降序排列 大于号变小于号 ..原创 2022-04-05 19:21:34 · 58 阅读 · 0 评论 -
3.算法排序之NB三人组(快速排序、堆排序、归并排序)
1.快速排序(nlogn,速度最快,但极端情况下,速度很慢n^2)# 开发时间: 19:27'''快速排序代码实现'''import randomimport syssys.setrecursionlimit(10000) #设置跌点深度def partition(li,left,right): #归位函数 temp=li[left] #将原创 2022-04-06 17:55:52 · 1024 阅读 · 0 评论 -
4.算法之其他排序方法(希尔排序,计数排序,桶排序,基数排序)
1希尔排序import randomdef insert_sort_gap(li,gap): for i in range(gap,len(li)): temp=li[i] j =i -gap while j >=0 and li[j]>temp: li[j+gap]=li[j] j-=gap li[j+gap]=temp return lidef she原创 2022-04-06 23:04:12 · 54 阅读 · 0 评论 -
5.算法之栈和队列之迷宫求解算法
1.特点及常用命令栈特点先进后出,后进先出。(常用命令)list=[1,2,3,4,5]list.append(6) #进栈list.pop() #出栈list[-1] #查看栈顶队列特点先进先出,后进后出。(双向队列常用命令)from collections import deque #导入库 queue=deque() #创建双向队列 queue.append(1) #从队尾进入队列 queue.原创 2022-04-10 16:56:25 · 563 阅读 · 0 评论 -
6.算法之链表的创建、遍历、添加与删除
1.链表的创建(头插法和尾插法)# 开发时间: 17:11class Node: def __init__(self,item): self.item=item self.next=None # self.prior=None #双链表另一个指针def create_linklist_head(li): #头插法 head=Node(li[0]) #定义头 for item in li[1原创 2022-04-10 19:24:40 · 508 阅读 · 0 评论 -
7.算法之哈希表的插入、查找功能的实现
class Linklist: #定义一个链表类 class Node: #大类套小类 def __init__(self,item=None): #对Node进行初始化 self.item=item self.next=None class linklistiterntor: #定义迭代器类 .原创 2022-04-11 17:03:44 · 561 阅读 · 0 评论 -
8.算法树的实例之文件模拟系统
# 开发时间: 20:53class Node: def __init__(self,name,type='dir'): #定义文件夹 self.name=name self.type=type self.children=[] self.parent=None def __repr__(self): #为了打印name return self.nameclass .原创 2022-04-11 21:31:06 · 119 阅读 · 0 评论 -
9.算法之二叉树的建立与遍历(前、中、后序遍历以及层次遍历)
以图示为例,进行遍历(例子来源清华大学博士讲解Python数据结构与算法(完整版)全套100节_哔哩哔哩_bilibili)from collections import dequeclass Bitree: def __init__(self,data): #建立二叉树 self.data=data self.lchild=None self.rchild=Nonea=Bitree('A') .原创 2022-04-11 23:23:56 · 830 阅读 · 0 评论 -
10.算法之二叉搜索树的插入 查询与删除
二叉搜索树是指每一个节点最多由两个孩子节点,且左孩子及其孩子都比他小,右孩子及其孩子都比他大的二叉树。# 开发时间: 9:27class Bitree: def __init__(self,data): #建立二叉树 self.data=data self.lchild=None self.rchild=None self.parent=Noneclass bst: def __init__(se...原创 2022-04-13 11:38:57 · 68 阅读 · 0 评论 -
11.算法之AVL树的插入、排序
# 开发时间: 15:23from bst import Bitree,bstclass AVLNode: def __init__(self, data): # 建立二叉树 self.data = data self.lchild = None self.rchild = None self.parent = None self.bf=0class AVLTree(bst): def __init__.原创 2022-04-13 23:57:18 · 204 阅读 · 0 评论 -
12.算法进阶之贪心算法(零钱找零、分数背包、数字拼接、活动场地)
1.零钱找零,使给钱的总张数是最少的,每种钱币的张数是无限的。money = [100, 50, 20, 10, 5, 1]def change_money(x, money): m = [0 for _ in range(len(money))] for i, val in enumerate (money): m[i] = x // val x = x % val return m,xprint(change_money(587.5,原创 2022-04-14 17:10:33 · 1087 阅读 · 0 评论 -
13.算法进阶之路径规划(斐波那契数列求解、钢条切割问题和最长公共序列)
1.斐波那契数列(每一个数,等于前两个数之和)思想:1)递归思想,把每一个数化成前两个数的和,然后依次迭代,但效率极低 2)从前往后,把数列每一项存起来,然后依次取用即可。# 开发时间: 22:59#问题:递归子问题重复计算,造成效率低def fibnacci(n): if n==1 or n==2: return 1 else: return fibnacci(n-1)+fibnacci(n-2)print(fibn...原创 2022-04-15 16:42:55 · 370 阅读 · 0 评论