随笔分类 -  数据结构与算法

上一页 1 ··· 6 7 8 9 10

python3实现数据结构与算法30天-排序-快速排序(7)
摘要:快速排序: 快 时间复杂度:O(nlogn) 相较冒泡排序: 如果list长度1024,冒泡是O(n^2),粗略计算应是10214*1024,快排预计1024*(log1024)=1024*10,2个数量级优势。 快速排序思路: 1.取一个元素p,第一个元素,使元素p归位 2.列表被p分成两部分,左 阅读全文

posted @ 2021-03-15 21:52 进击的davis 阅读(74) 评论(0) 推荐(0)

python3实现数据结构与算法30天-排序-插入排序(6)
摘要:思想: 1.有序区和无序区,原地排序 2.左边有序,右边无序,每次从无序抽数放入有序区,直到无序区数量0 时间复杂度:O(n^2) 代码实现: def insert_sort(lst): for i in range(1, len(lst)): # i表示抽取数的下标 temp = lst[i] j 阅读全文

posted @ 2021-03-15 21:28 进击的davis 阅读(70) 评论(0) 推荐(0)

python3实现数据结构与算法30天-排序-选择排序(5)
摘要:算法思路: 每次选出最小的,放入第一个位置, 再一趟排序记录列表无序区最小的数,放第二个位置 算法关键点:有序区和无序区,无序区最小的数 时间复杂度:O(n^2) 1.简单版-代码: import def select_sort_simple(lst): """create new list, ca 阅读全文

posted @ 2021-03-15 07:32 进击的davis 阅读(63) 评论(0) 推荐(0)

python3实现数据结构与算法30天-排序-冒泡排序(4)
摘要:##基本思想: 1.列表每两个相邻的数,如果前面的比后面大,则交换这两个数 2.一趟排序完成后,则无序区减少一个数,有序区增加一个数 注意:趟,无序区范围 时间复杂度:O(n^2) ###代码实现: import random def bubble_sort(lst): for i in range 阅读全文

posted @ 2021-03-14 23:19 进击的davis 阅读(64) 评论(0) 推荐(0)

python3实现数据结构与算法30天-查找-二分查找(3)
摘要:二分查找,折半查找,在一个排好序的列表,列表元素lst[0:n],时间复杂度:O(logn) 思想: 1.确定初始下界上界(索引-index),下界0,上界列表长度减1 2.判断条件控制while循环,下界小于上界,中间值整除2向下取整,如不满足循环,说明列表无此元素 3.情况1,fast way, 阅读全文

posted @ 2021-03-14 22:28 进击的davis 阅读(57) 评论(0) 推荐(0)

python3实现数据结构与算法30天-查找-顺序查找(2)
摘要:顺序查找,也叫线性查找,从列表的第一个元素开始,顺序进行搜索,直到找到元素或者搜索到列表的最后一个元素为止。 时间复杂度:O(n) import random def linear_search(lst, val): for index in range(len(lst)): # for index 阅读全文

posted @ 2021-03-14 18:15 进击的davis 阅读(73) 评论(0) 推荐(0)

python3实现数据结构与算法30天-汉诺塔与递归(1)
摘要:汉诺塔问题的实现,n个大小塔片,ABC左至右依次排布3根柱子,n=64, 开始塔片按小到大,依次高低垒在A柱,要求将塔片全部按原顺序全部堆在C柱 要求,每次只能移动一张塔片 注:如果每移动一块需要1秒,全部实现(2^64-1),大约5800亿年才能实现 思想: 1.总体可以分为(n-1)部分,第n块 阅读全文

posted @ 2021-03-13 22:37 进击的davis 阅读(93) 评论(0) 推荐(0)

基于python实现二叉树的遍历
摘要:""" 二叉树实践: 用递归构建树的遍历 # 思路分析 -- 1.使用链式存储,一个Node表示一个数的节点 -- 2.节点考虑使用两个属性变量,分别表示左连接右连接 """ # 用列表存储,[d,l,r],其中d表示根节点,l/r左子树和右子树 # bitree.py 二叉树的简单实践 # 自定义 阅读全文

posted @ 2020-08-29 07:52 进击的davis 阅读(181) 评论(0) 推荐(0)

基于python常用排序与查找
摘要:""" 排序与查找 -- 冒泡排序 -- 选择排序 -- 快速排序 --****经典 -- 希尔排序 """ # 常用排序的实现 # 冒泡排序-每轮排出最大 时间复杂度O(n**2) def bubble(list_): if list_: # 非空列表排序 # 外层表示比较轮数 for i in 阅读全文

posted @ 2020-08-29 07:37 进击的davis 阅读(226) 评论(0) 推荐(0)

基于python实现顺序存储的栈
摘要:""" 栈 sstack.py 栈模型的顺序存储 重点代码 思路总结: 1.列表是顺序存储,但功能多,不符合栈的模型特征 2.利用列表,将其封装,提供接口方法 """ # 自定义异常类 class StackError(Exception): pass # 顺序栈类 class SStack: de 阅读全文

posted @ 2020-08-28 23:59 进击的davis 阅读(481) 评论(0) 推荐(0)

基于python实现顺序存储的队列代码
摘要:""" 队列-顺序存储 seqqueue.py 代码实现 """ # 自定义异常类 class QueueError(Exception): pass # 队列-顺序存储代码-入队,出队,判断空满 class SeqQueue: def __init__(self): # 创建空列表作为存储空间 s 阅读全文

posted @ 2020-08-28 23:57 进击的davis 阅读(414) 评论(0) 推荐(0)

基于python实现链式栈
摘要:""" 链式栈 linkstack.py 思路分析: 1.源于链表结构 2.封装栈的操作方法(入栈,出栈,栈空,栈顶) 3.链表的开头作为栈顶(不用每次遍历,效率高,怎样实现简单) """ # 链式栈异常 class StackError(Exception): pass # 定义节点类 class 阅读全文

posted @ 2020-08-28 23:56 进击的davis 阅读(686) 评论(0) 推荐(0)

基于python实现链式队列代码
摘要:""" 链式存储-队列 linkqueue.py 代码实现 思路: 1.入队, 2.出队, 3.判断空满 """ # 异常类 class QueueError(Exception): pass # 节点生成类 class Node: """ 思路:将自定义的类视为节点的生成类, 实例对象中包含数据的 阅读全文

posted @ 2020-08-28 23:53 进击的davis 阅读(875) 评论(0) 推荐(0)

基于python实现单链表代码
摘要:1 """ 2 linklist.py 3 单链表的构建与功能操作 4 重点代码 5 """ 6 7 class Node: 8 """ 9 思路:将自定义的类视为节点的生成类, 10 实例对象中包含数据的部分和下一个节点的next 11 """ 12 def __init__(self,val,n 阅读全文

posted @ 2020-08-28 23:51 进击的davis 阅读(279) 评论(0) 推荐(1)

上一页 1 ··· 6 7 8 9 10

导航