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

摘要:1. 浅拷贝 浅拷贝是对于一个对象的顶层拷贝 通俗的理解是:拷贝了引用,并没有拷贝内容 最常用的赋值语句其实就是浅拷贝。 copy模块中的copy.copy是浅拷贝 这里需要注意,e拷贝的是c里面所有的东西,在下面的例子中,c里面是两个指向(a和b),因此e拷贝了c里面的两个指向,而没有拷贝c的地址 阅读全文
posted @ 2020-09-14 16:48 牛公的跑奔 阅读(184) 评论(0) 推荐(0) 编辑
摘要:前序:根 左 右 中序:左 根 由 后序:左 右 根 想要通过二叉树的遍历确定一棵树,必须知道前序和中序遍历或者必须知道后序和中序遍历。也就是说中序遍历必须知道,外加一个前序或者后序 阅读全文
posted @ 2020-08-29 10:49 牛公的跑奔 阅读(434) 评论(0) 推荐(0) 编辑
摘要:二叉树的遍历 树的遍历是树的一种重要的运算。所谓遍历是指对树中所有结点的信息的访问,即依次对树中每个结点访问一次且仅访问一次,我们把这种对所有节点的访问称为遍历(traversal)。那么树的两种重要的遍历模式是深度优先遍历和广度优先遍历,深度优先一般用递归,广度优先一般用队列。一般情况下能用递归实 阅读全文
posted @ 2020-08-29 10:22 牛公的跑奔 阅读(720) 评论(0) 推荐(0) 编辑
摘要:二叉树 二叉树的基本概念 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree) 二叉树的性质(特性) 性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>0)性质2: 深度为k的二叉树至多有2^k - 1个结点 阅读全文
posted @ 2020-08-29 10:19 牛公的跑奔 阅读(2009) 评论(0) 推荐(0) 编辑
摘要:顺序表: 优点:存取元素的时候可以以O(1)的方式定位 缺点:需要内存上开辟连续的空间 链表: 优点:需要的空间是分散的,增大了内存空间利用率 缺点:链表由于增加了结点的指针域,空间开销比较大, 阅读全文
posted @ 2020-08-26 20:57 牛公的跑奔 阅读(391) 评论(0) 推荐(0) 编辑
摘要:二分法查找 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表 阅读全文
posted @ 2020-04-30 00:09 牛公的跑奔 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-04-29 22:54 牛公的跑奔 阅读(199) 评论(0) 推荐(0) 编辑
摘要:归并排序 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。 阅读全文
posted @ 2020-04-28 23:51 牛公的跑奔 阅读(180) 评论(0) 推荐(0) 编辑
摘要:快速排序 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数 阅读全文
posted @ 2020-04-28 23:24 牛公的跑奔 阅读(108) 评论(0) 推荐(0) 编辑
摘要:希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序的基本思想是:首先选择一个元素选择步长将数组划分为若干小组,对各个小组分别进行排序,然后不断将步长缩小,不断分组和排序,直到后的步长为1,对所有的元素进行排序,此时,经过前期的排序工作,能够减少全 阅读全文
posted @ 2020-04-27 23:07 牛公的跑奔 阅读(125) 评论(0) 推荐(0) 编辑
摘要:基本思想:将一个记录插入到已排好序的序列中,从而得到一个新的有序序列(将序列的第一个数据看成是一个有序的子序列,然后从第二个记录逐个向该有序的子序列进行有序的插入,直至整个序列有序) (图片来源网络:https://www.jianshu.com/p/7cf0656e76dd) 阅读全文
posted @ 2020-04-27 22:44 牛公的跑奔 阅读(134) 评论(0) 推荐(0) 编辑
摘要:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 1 #方法一,每次选出最大的放在右边 2 阅读全文
posted @ 2020-04-27 00:07 牛公的跑奔 阅读(187) 评论(0) 推荐(0) 编辑
摘要:冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比 阅读全文
posted @ 2020-04-26 23:24 牛公的跑奔 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-04-13 23:01 牛公的跑奔 阅读(164) 评论(0) 推荐(0) 编辑
摘要:1 import time 2 3 #方法一: 4 class Solution: 5 def twoSum(self, nums, target): 6 for i in range(len(nums)): #第一次循环列表 7 for j in range(i+1,len(nums)): #第二 阅读全文
posted @ 2020-04-01 21:01 牛公的跑奔 阅读(159) 评论(0) 推荐(0) 编辑

总访问量:AmazingCounters.com