数据结构与算法
如梦@_@
熬得住无人问津的寂寞,才配拥有诗和远方,其实一直陪着你的,都是那个了不起的自己。
展开
-
数据结构与算法之反转链表的两种解法总结(Python实现)
1、迭代方法实现链表的反转思想:主要是需要使用到多个指针进行定位。pre、cur、tmp第一步:将pre = None,cur=head,tmp=cur.next第二步:将cur.next=pre,pre=cur,cur=tmp,tmp=tmp.next重复上面的第二步操作,直到cur=None,返回preclass Node(object): def __init__(self,val): self.val = val self.next = None原创 2021-11-19 13:27:17 · 410 阅读 · 0 评论 -
数据结构与算法之二叉树广度遍历、深度遍历总结
什么是树,它是和链表一样都是一种抽象数据类型(ADT),包括数据结构和对数据的操作。树是一种二维平面的数据结构结构,它也是由节点组成的,只是它的后继节点不止一个,而链表的后继节点只有一个。树具有以下特点:①每个节点有零个或多个子节点;②没有父节点的节点称为根节点;③每一个非根节点有且只有一个父节点;④除了根节点外,每个子节点可以分为多个不相交的子树;先来介绍一种典型的树类型:二叉树(上图不是个二叉树,因为根节点就不满足只有两个子树的条件)定义:每个结点最多含有两个子树的树称为二叉树。二叉原创 2021-11-14 23:56:47 · 1003 阅读 · 0 评论 -
数据结构与算法之二分查找法的总结
二分查找也叫做折半查找。二分查找的条件:①是一个有序序列 ②是一个顺序表。比如有序的列表:[1,2,3,5,6,7,8,9]二分查找的复杂度:最优复杂度:O(1)最坏复杂度:O(logn)算法思想:给定一个序列,查找序列中是否有元素a,查找的方法是:将序列折半,找到中间位置的数值mid,将该数值和a进行比较,比a大,则在左边的序列中找a是否存在,方法还是折半查找,如果mid比a小,那么在中间值右边中的序列中找a是否存在,方法也还是折半查找。可以看到上面有部分重复的功能,就是折半查找,这块可以使用原创 2021-11-12 20:26:32 · 516 阅读 · 0 评论 -
数据结构之栈总结(Python实现)
栈是链表的一种应用,栈的数据结构类型就是链表。特点:先进后出。就像一个瓶子,瓶底的是先进去,最后出来。那么对栈的响应操作就没有那么多了,只有入栈,出栈,遍历,计算长度。下面通过代码来实现:#节点实现class Node(object): def __init__(self,i): self.val = i self.next = None#栈实现class stack(object): def __init__(self,node):原创 2021-11-12 18:56:45 · 1120 阅读 · 0 评论 -
python语言实现快速排序以及复杂度的分析总结
一、快速排序思想:对一组数据进行排序,找到一个位置放置这组数据的第一个数,该位置左边的数比该数小,右边比该数大。然后分别对左边和右边的数据再次使用同样的方法,最后直到左右两边只有一个数据,结束。复杂度:最优复杂度:O(nlogn)最坏复杂度:O(n^2)下面给个例子:比如待排序的序列,需求是需要将如下的序列按照升序进行排列:34 12 23 56 78 21 9第一次:将34使用tmp进行存放,使用两个变量分别为low和high,用来找上述序列中合适的位置放置tmp,首次low指向34,hi原创 2021-11-10 17:23:59 · 1033 阅读 · 1 评论