数据结构
文章平均质量分 65
maya业余研究员
这个作者很懒,什么都没留下…
展开
-
python排序算法之堆排序
堆 堆是种完全二叉树,每个结点的值都大于或等于其左右孩子结点值的堆称为大顶堆;反之,每个结点的值都小于或等于其左右孩子结点的值称为小顶堆。 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序复杂度均为O(nlogn)。当堆父节点的下标为i时,其左孩子的下标为2i+1,右孩子的下标为2i+2, 大顶堆:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2] 小顶堆:arr[i] <= arr[2i+1] && arr[i] &原创 2020-06-09 10:32:32 · 215 阅读 · 0 评论 -
python列表查找之线性查找和二分法查找
从一个列表中找到目标元素的下标 1.线性查找 顾名思义,也就是顺序查找,遍历每一个元素,所以比较慢 num_list=list(range(1,201)) def linear(num_list,num): for index in range(len(num_list)): if num_list[index]==num: return index return -1 2.二分法查找 列表长度每次减半,所以比较快,但二分法排序列表必须是一个从小到大原创 2020-06-09 10:01:00 · 271 阅读 · 0 评论 -
汉诺斯塔问题
主要思路 1.从A柱将上面的n-1号盘子通过C柱移至B柱上 2.将A柱上剩余的第n号盘子移至C柱上 3.再将B柱上的n-1号盘子通过A柱移至C柱上 f(n)=2f(n-1)+1 递归实现 def hanio(n,A,B,C): if n>0: hanio(n-1, A, C, B) print(n) print("%s->%s"%(A,C)) hanio(n - 1, B, A, C) hanio(10,"A","B","C原创 2020-06-08 10:59:42 · 204 阅读 · 0 评论 -
python斐波那契数列几种实现方法比较
斐波那契数列 1.递归实现 递归实现最简单,但是最慢。f(9)=f(8)+f(7),f(8)=f(7)+f(6),数字每增加1,计算量几乎大一倍。 def fbnq1(n): if n==0 or n==1: return 1 return fbnq1(n-1)+fbnq1(n-2) f(9)要计算一次f(7),f(8)也要重新计算一次f(7)。递归不能存储前面计算的结果,每次都要重新计算,所以慢。 2.列表实现 将前两个元素之和追加到列表末尾,直接返回列表最末端数。比递归原创 2020-06-08 10:44:14 · 334 阅读 · 0 评论