
python数据结构与算法
文章平均质量分 70
更加熟悉掌握python,数据结构与算法必不可少.
金灰
小小萌新,持续学习中,大家一起加油(ง •̀_•́)ง
展开
-
七(2).堆排序
sift(li,0,i-1) # 调整, low为整个堆的根节点0. high在变, i-1 为新的high.while j <= high: #只要j位置有数值.(j是从上往下去的,索引也是,只有当j大于high的时候,循环才停止.)if j+1 <= high and li[j+1] > li[j]: #如果右孩子有并且比较大.li[i], li[0] = li[0], li[i] # 交换.拿下最大的.li[i] = li[j] #直接换位置.原创 2024-03-26 07:41:13 · 962 阅读 · 0 评论 -
七.(1)堆排序--前传
假设根节点的左右子树都是堆,但根节点不满足堆的性质.可以通过一次向下的调整来将其变成一个堆.(大的领导小的)原创 2024-03-24 12:12:15 · 308 阅读 · 0 评论 -
六.排序nb三人组(快速排序)
-先找一个变量把 5(第一个数) 存起来,(两个箭头分别是left , right)--左边有一个空位, 发现左边的位置是给比5小的值准备的.--找比5小的值放到左边, 从右边开始找. 8 9 2放左边,右边出现空位,--从左边找比5大的数, 7放右边-->左边出现空位,从右边箭头找, 1 比5小,放左边-->右边出现空位, 从左边箭头找, 4 6比5大,放右边-->左边出现空位, 3比5小,放左边-->最后箭头重合, 结束.原创 2024-03-23 14:04:07 · 1313 阅读 · 0 评论 -
五.排序(插入)
for i in range(1,len(li)): #i 表示摸的牌的下标. 假设已经提前摸到一张牌啦.(手里早就有一张牌的情况下,再摸牌)----摸出一个3来,j每次与其比较,如果j > 3 ,则往右移, 当 j = -1 时,(没有值了)条件结束,while j >= 0 and li[j] > tmp: #如果手里的牌 > 摸到的牌。li[j+1] = li[j] #那么就往右移一下.j = i-1 #j 表示手里牌的下标.时间复杂度为o(n⒉)原创 2024-03-19 20:14:52 · 515 阅读 · 0 评论 -
四.排序(冒泡/选择)
排序:将一组“无序”的记录序列调整为“有序”的记录序列。列表排序:将无序列表变为有序列表输入:列表输出:有序列表升序与降序内置排序函数:sort()列表每两个相邻的数,如果前面比后面大,则交换这两个数.一趟排序完成后,则无序区减少一个数,有序区增加一个数。原创 2024-03-18 22:23:48 · 1747 阅读 · 2 评论 -
三.查找(顺序/二分)
查找:在一些数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程。列表查找(线性表查找):从列表中查找指定元素输入:列表、待查找元素输出:元素下标示(未找到元素时一般返回None或-1)内置列表查找函数: index() --->顺序查找顺序查找(linear search)---按照顺序进行查找.---必须要先排序,--->有序.二分查找:又叫折半查找,从 有序列表 的初始候选区li[0:n]开始,通过对待查找的值与候选区中间值的比较,,可以使候选区减少一半。原创 2024-03-16 13:44:50 · 1047 阅读 · 0 评论 -
二.递归及实例(汉诺塔问题)
print("moving %s from %s to %s" % (n,a,c)) #把第n个从a移动到c。hannuta(n-1,b,a,c) #把n-1个从b经过a移动到c(b-->c)hannuta(n-1,a,c,b) #将n-1个从a经过c移到到b(a-->b)#n为盘子的个数 a,b,c分别为3个地方.原创 2024-03-14 18:33:29 · 452 阅读 · 0 评论 -
一.算法基础
1-在什么配置下运行(机器)2-问题的规模(复杂度),n。------一个大概的时间.空间换时间:分布式运算.原创 2024-03-14 18:29:46 · 355 阅读 · 0 评论