数据结构与算法
Leeeey
这个作者很懒,什么都没留下…
展开
-
初探排序-冒泡排序及优化(python实现)
要求:对某一无序列表进行排序,使其按照从小到大排序,不使用python内建函数。 假设给定的列表为: list=[1,2,3,4,5,6,9,8,7] 1、解题思路 看到题目首先脑子里想到的就是前两个数比较大小,如果第一个数大于第二个数,就交换两个数的位置,以此类推知道所有的数都比较完,逻辑如下: if list[0] > list[1]: temp = list[1] #先用一个变量把...原创 2019-03-30 16:56:33 · 174 阅读 · 0 评论 -
初探排序-插入与选择排序与优化
发现了一个网站可以更好的帮助理解排序的过程:点这里查看 插入排序 保持第一个位置不动,后面位置上的元素比前面小,则交换,换一轮,则第一个位置上的元素就是最小的了 继续保持第二个位置上元素不动,接着比较其后面的元素 num=[78,54,443,32,65,654,234,232] for i in range(1,len(num)): minNum= num[i]#默认当前num[i]为最...原创 2019-04-03 16:12:38 · 159 阅读 · 0 评论 -
初探排序-快速排序(python实现)
快速排序是冒泡排序的一种改进 基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 代码实现: def quick_sort(data): if len(data) >= 2: # 递归入口及出口 mid ...原创 2019-04-03 17:28:39 · 254 阅读 · 0 评论 -
堆排序详解(python实现),附树结构概念及性质
堆排序是在树结构(二叉树)上进行优化的一种排序方法,了解堆排序前需要先了解树的概念及其性质。 在次简要说明下其性质,详细定义及说明请参考二叉树 定义: 一种非线性结构,是n(n>=0)个元素的集合; 只有一个没有前驱结点(父结点)的元素称为根; 树中除根结点外,其余元素只能有一个前驱结点(父结点),可以有零个或多个后继结点(子结点),二叉树最多有两个子结点; 性质: 在二叉树的第i层...原创 2019-05-14 14:06:24 · 223 阅读 · 0 评论 -
链表详解(python实现)
一、 定义见百度百科链表 链表由表头和节点组成,节点分为数据域和指针域,数据域中存贮数据元素,指针域存储下个结点的地址 二、单链表实现逻辑 创建节点类Node和链表类Linklist,Linklist类中包含head属性,head的值为0或Node对象,Node类中包含value属性存储数据,next属性存储下个节点的地址(Node对象) 循环节点从head开始取next属性,直到next=0为...原创 2019-05-23 17:50:03 · 2560 阅读 · 0 评论