![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法(python实现)
不服输的南瓜
这个作者很懒,什么都没留下…
展开
-
数据结构——python目录
一. 数据结构之python实现顺序表原创 2019-01-19 10:28:51 · 845 阅读 · 1 评论 -
数据结构之python实现循环双链表实例
题目如下:原创 2019-02-20 19:17:56 · 429 阅读 · 0 评论 -
数据结构之python实现循环顺序队列实例
题目如下:python实现:class CircularSequenceQueue(): def __init__(self): self.MaxQueueSize = 10 self.s = [None for x in range(0,self.MaxQueueSize)] self.front = 0 self.r...原创 2019-02-26 20:48:23 · 1321 阅读 · 1 评论 -
数据结构之python实现队列的链式存储
定义:链式队列在创建一个队列时,队头指针front和队尾指针rear指向结点的data域和next域均为空。python实现:class QueueNode(): def __init__(self): self.data = None self.next = Noneclass LinkQueue(): def __init__(self)...原创 2019-02-26 22:13:48 · 2033 阅读 · 0 评论 -
数据结构之python实现递归
递归我们把某一过程或函数调用自身称为递归,若该过程或函数直接调用自身称为直接递归,否则称为间接递归。斐波那契数python实现def Fibonacci(n): if n == 1: return 1 elif n == 2: return 1 else: return Fibonacci(n-1)+ Fibonacci...原创 2019-03-03 12:29:55 · 382 阅读 · 0 评论 -
树的存储的三种方式
树有三种常用的存储方式:双亲表示法、孩子表示法、孩子兄弟表示法原创 2019-03-10 18:04:27 · 20299 阅读 · 0 评论 -
python 之二叉树存储、建立及遍历实现
定义满二叉树:在一棵二叉树中,若所有分支结点都有左子树和右子树,并且所有的叶子结点只在最大层次出现,这样的二叉树称为满二叉树。深度为h的二叉树,若其结点数为$2^{h}-1$,则该二叉树为满二叉树。完全二叉树:对于一棵深度为k的二叉树,如果树中每一个结点都与深度为k的满二叉树中的同一位置有相同的编号,该二叉树就是完全二叉树,完全二叉树的叶子结点集中在最下面两层,对于任一结点,若其右子树的...原创 2019-03-11 22:06:16 · 3973 阅读 · 0 评论 -
python之查找(顺序查找、折半查找、索引查找、二叉排序树查找、哈希表查找)
查找可以分为静态查找和动态查找。静态查找定义:在查找过程中,只是对数据元素执行查找操作,而不对其执行其他操作。顺序查找折半查找索引查找通常用线性表来表示静态查找表,线性表有顺序存储结构和链式存储结构,此处只考虑顺序结构。顺序查找顺序查找思路:将给定值与静态查找表中数据元素的关键字逐个比较,若表中某个元素的关键字与给定值相等,则查找成功,否则查找失败。class StaticT...原创 2019-03-26 23:21:28 · 2619 阅读 · 0 评论 -
python实现快速排序
快排思路:用其中一个元素作为枢轴,通过一次排序,把序列分为左右两个序列,其中左序列均小于枢轴,右序列均大于枢轴,重复这个过程。python实现:def AdjustPartition(list1,low,high): if low < high: left = low right = high key = list1[left]...原创 2019-07-01 22:21:49 · 196 阅读 · 0 评论 -
python实现两个str的最大公共子序列
思路:如以下图所示:代码实现:def FindStr(s1,s2): if not s1 or not s2: return " " strlen,strend = 0,0 result = [[i for i in [0]*len(s2)] for j in [0]*len(s1)] for i in range(len(s1)): ...原创 2019-07-07 23:42:55 · 593 阅读 · 0 评论 -
python实现全排列
对于解释,我觉得以下这篇文章不错!https://www.cnblogs.com/zyoung/p/6764371.htmlpython实现:def AllRange(listx, start, end): if start == end: for i in listx: print(i,end = '') print() ...原创 2019-07-02 14:24:02 · 8348 阅读 · 0 评论 -
二分查找
定义二分查找:思路很简单,细节是魔鬼。基本框架:def find(nums,target): left = 0 right = *** while left ** right: mid = (left + right) // 2 if nums[mid] == target: *** elif ...原创 2019-07-19 15:51:39 · 183 阅读 · 0 评论 -
python实现堆排序
堆排序的序列可以看成一棵完全二叉树,完全二叉树比较适合用数组来存储,数组下标从1开始存储,这样的话下标为i节点的左孩子为2i,右孩子为2i+1。父节点为i/2。堆排序建堆过程'''堆排序的建堆过程'''def AjustHeap(i,HeapList): ListLen = len(HeapList)-1 HeapList[0] = HeapList[i] j = i...原创 2019-07-06 23:41:37 · 344 阅读 · 0 评论 -
快排及优化
思路:快速排序的本质就是选取一个基准数,通过一次快排把基准数大的都放在基准数的左边,把比基准数小的放在基准数的右边,这样就找到了基准数在数组中的正确位置.然后可以用递归的方式分别对前半部分和后半部分排序,最终实现整体数组有序。快排是不是稳定排序?所谓排序的稳定性,就是指在排序过程中,在对某关键字排序后会不会改变其他关键字的顺序。快排会改变,所以不是稳定排序。代码:常规代码1:def ...原创 2019-08-16 18:35:42 · 649 阅读 · 0 评论 -
数据结构之python实现循环顺序队列
定义:对于普通顺序队列,可能队列提示已满,但其实队头还有空位置,这时候就可以考虑用循环顺序队列,把新元素放在队头的空闲位置。python实现:...原创 2019-02-25 23:09:38 · 2562 阅读 · 2 评论 -
数据结构之python实现队列的顺序存储
定义:队列是一种特殊的线性表,遵循“ 先进先出”的原则,操作在两端进行,插入元素的一端被称为队尾(real),删除元素的一端称为队头(front)。队头指针实际指向队头元素所在位置的前一个位置,队尾指针指向实际队尾元素所在位置。顺序队列中的元素恒为rear-front,其中队空的条件为front = rear;队满的条件为rear+1=MaxQueueSize。python实现:...原创 2019-02-25 20:37:15 · 1655 阅读 · 0 评论 -
数据结构之python实现顺序表
顺序表原创 2019-01-19 22:38:39 · 12139 阅读 · 5 评论 -
数据结构之python实现循环单链表
循环单链表原创 2019-01-25 23:31:03 · 2716 阅读 · 0 评论 -
数据结构之python实现单链表
一个典型的单链表:原创 2019-01-23 23:22:20 · 922 阅读 · 2 评论 -
数据结构之python实现双链表
双链表原创 2019-01-28 20:23:15 · 555 阅读 · 0 评论 -
数据结构之python实现循环双链表
循环双链表:原创 2019-02-14 21:32:30 · 773 阅读 · 0 评论 -
数据结构之python实现单链表具体实例
题目如下:原创 2019-02-17 19:32:53 · 1245 阅读 · 2 评论 -
数据结构之python实现循环单链表实例
题目如下:python实现:原创 2019-02-17 21:01:02 · 601 阅读 · 1 评论 -
数据结构之python实现栈的顺序存储
定义栈是一种只能在一端进行操作的线性表,遵循“后进先出(LIFO)”的原则,当栈为空时,栈顶指针top= -1。python实现class SequenceStack: def __init__(self): self.MaxStackSize = 10 self.s = [None for x in range(0,self.MaxStackSize...原创 2019-02-23 12:08:41 · 1215 阅读 · 1 评论 -
数据结构之python实现队列的链式存储实例
题目如下:python实现:class QueueNode(): def __init__(self): self.data = None self.next = Noneclass LinkQueue(): def __init__(self): tQueueNode = QueueNode() self.f...原创 2019-02-27 21:36:35 · 1375 阅读 · 0 评论 -
数据结构之python实现栈的顺序存储具体实例
题目如下:python实现class SequenceStack: def __init__(self): self.MaxStackSize = 20 self.s = [None for x in range(0,self.MaxStackSize)] self.top = -1 '''判断栈是否为空'''...原创 2019-02-23 17:43:03 · 770 阅读 · 0 评论 -
数据结构之python实现栈的链式存储
顺序存储是分配一组连续的存储单元 ,如果栈满,不能再添加;采用链式存储,可以需要多少存储空间就申请多少空间。python实现class StackNode: def __init__(self): self.data = None self.next = Noneclass LinkStack: def __init__(self): ...原创 2019-02-23 22:26:30 · 1443 阅读 · 0 评论 -
数据结构之python实现栈的链式存储具体实例
题目如下:python实现:class StackNode: def __init__(self): self.data = None self.next = Noneclass LinkStack: def __init__(self): self.top = StackNode() '''判断链栈是否为空''' ...原创 2019-02-24 12:51:29 · 659 阅读 · 0 评论 -
数据结构之python实现双链表实例
题目如下:原创 2019-02-19 21:55:11 · 453 阅读 · 0 评论 -
冒泡排序
冒泡排序就是相邻关键字两两比较,一次排序后最大的关键字在末尾,是一种稳定的排序方法,时间复杂度是O(n2)O(n^{2})O(n2)。C++实现基本冒泡排序:#include<iostream>using namespace std;void sort_maopao(int a[],int n) { int temp; for (int i = 0;i< ...原创 2019-09-15 17:06:50 · 247 阅读 · 0 评论