![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
十八水
这个作者很懒,什么都没留下…
展开
-
数据结构之python实现栈(stack)
1.栈(stack)定义栈,又叫堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(栈顶top或者栈底)进行**加入数据(push)和输出数据(pop)**的运算。由于栈数据结构只允许在一端进行操作,因而按照后进先出==(LIFO, Last In First Out)==的原理运作。2.python代码实现栈可以用顺序表实现,也可以用链表实现。如果采用...原创 2018-11-10 00:35:21 · 720 阅读 · 0 评论 -
数据结构之python实现冒泡算法(bubblesort)
1.冒泡排序思想比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。2.代码实现2.1 实现最优版 """冒泡排序""""" def bubb...原创 2018-11-12 21:06:42 · 820 阅读 · 0 评论 -
数据结构之python实现双端队列
双端队列deque双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。代码实现 """双端队列""""" class Deque(object): def __init__(self): ...原创 2018-11-12 20:56:31 · 656 阅读 · 0 评论 -
数据结构之python实现双向循环链表
1.双向循环链表每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向最后一个节点;而另一个指向下一个节点,当此节点为最后一个节点时,指向第一个节点。2.操作is_empty() 链表是否为空length() 链表长度travel() 遍历链表add(item) 链表头部添加append(item) 链表尾部添加insert(pos, item) 指定位置添加...原创 2018-11-09 02:21:33 · 585 阅读 · 0 评论 -
数据结构之python实现双向链表
1. 双向链表每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。2.操作is_empty() 链表是否为空length() 链表长度travel() 遍历链表add(item) 链表头部添加append(item) 链表尾部添加insert(pos, item) 指定位置添加remove(i...原创 2018-11-09 02:17:46 · 159 阅读 · 0 评论 -
数据结构之python实现单向循环链表
1.单向循环链表单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。2.操作is_empty() 判断链表是否为空length() 返回链表的长度travel() 遍历add(item) 在头部添加一个节点append(item) 在尾部添加一个节点insert(pos, item) 在指定位置pos添加节点remove(item...原创 2018-11-09 00:22:22 · 354 阅读 · 0 评论 -
python 实现单向链表
1.链表Linked list链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。链表一个节点包含数据存储单元和下一个节点的位置信息单元2.链表和顺序表的区别2.1 顺序表构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来...原创 2018-11-08 17:12:53 · 229 阅读 · 0 评论 -
数据结构之python实现归并排序(merge)
1 归并排序思想归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。2.代码实现2.1 实现原理代码1> 实现递归拆分部分 def mergesor...原创 2018-11-14 00:28:23 · 334 阅读 · 0 评论 -
线性表基础知识总结
1.线性表(linear list)线性表: 是一种数据结构, 一个线性表是n个具有相同特性的数据元素的有限序列线性表的实际存储方式,分为两种实现模型:顺序表和链表2.顺序表申请连续的存储空间依次存入数据数据之间有顺序关系取数据时根据下标(偏移量),一步计算出对应的内存地址时间复杂度是O(1)3.顺序表基本形式顺序表的基本布局 Loc(ei) = Loc(e0)...原创 2018-11-08 17:11:40 · 590 阅读 · 0 评论 -
数据结构之python实现快速排序quick
1 快速排序快速排序(Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2 快速排序过程步骤为:从数列中挑出一个元素,称为"基准"(pivot),重...原创 2018-11-13 01:58:05 · 183 阅读 · 0 评论 -
数据结构之python实现希尔排序shellsort
1 希尔排序思想基本信息希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。基本流程将数组列在...原创 2018-11-13 01:51:38 · 162 阅读 · 0 评论 -
数据结构之python实现插入排序(InsertionSort)
1 插入排序思想认为第一个数有序,从后面取出一个数跟前面组成有序.**核心:**如何把后续数据插入相应的位置通过构建有序序列,依次取出未排序序列的元素,并在已排序的序列中从后往前相比较,找到相应的位置并插入.从后往前的扫描过程中,需要反复把已排序的元素向后挪位,为最新元素提供插入空间.2 代码实现 def InsertionSort(li): n = len(...原创 2018-11-13 01:44:46 · 438 阅读 · 0 评论 -
数据结构之python实现选择排序(election sort)
1 选择排序思想选择排序Selection sort每次循环都跟默认的最小值进行比,从而获取每次循环范围内的元素最小值首先循环遍历一遍,找出一个最小的数,放到最前面,遍历从位置1到位置n的数,拿所有的数都跟最小的数进行比较,如果其中有比找出最小的数还小,那么记录这个更小数的位置, 从而获取最小数并放置在第一位,依次遍历获取列表剩余元素的最小值并依次排序.2.代码实现 """选择排序...原创 2018-11-13 01:37:15 · 237 阅读 · 0 评论 -
数据结构之python实现队列Queue
1.队列Queue的定义队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的(First In First Out)的线性表,简称FIFO。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作!2.python代码 """队列 先进先出""""" cl原创 2018-11-10 00:38:39 · 326 阅读 · 0 评论 -
数据结构之python实现二分法(binary_search)
二分法1 搜索搜索是在一个项目集合中找到一个特定项目的算法过程。搜索通常的答案是真的或假的,因为该项目是否存在。 搜索的几种常见方法:顺序查找、二分法查找、二叉树查找、哈希查找2 二分法二分查找又称折半查找,优点: 比较次数少,查找速度快,平均性能好;缺点: 是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列...原创 2018-11-23 23:23:20 · 267 阅读 · 0 评论