数据结构与算法
random numbers
代码爱好者,憧憬踏入互联网的 大龄-非职业-代码搬砖人。
展开
-
算法学习之排序算法(三)
基数排序 一般以10为基数,则元素组成为 0-9,共计 10 组数。 排序过程: 待排序数组: [20, 9, 4, 10, 31, 25] 1、根据个位数分组 根据个位数的值 分到对应的组,例如10,20分到编号为0的组; 2、根据十位数分组 在1分组的基础上,根据十位数分组,规则同1,如果元素只有一位数,则其十位数视作0; 此时分组完成,如果其他情况下,还有百位、千位等,继续分组即可; 3...原创 2019-12-01 23:13:31 · 92 阅读 · 0 评论 -
算法学习之树与算法
树结构 树结构: 关键组成:根节点,叶子节点。 成员相对关系:父节点,子节点,兄弟节点。 树的遍历: 按照广度遍历:分层遍历,顺序为从上到下,从左到右。 按照深度遍历:根据递归顺序,分为三种,前序即按照中、左、右的顺序,中序即按照左、中、右的顺序,后序按照左、右、中的顺序。 算法实现 节点类定义: class Node(object): def __init__(self, item, ...原创 2019-11-23 08:12:54 · 129 阅读 · 0 评论 -
算法学习之排序算法(二)
快速排序和归并排序 快速排序过程: 选择一个元素(通常为序列的第一位元素),将其分别与 序列中其他元素比较大小,将大于其值的元素放在 参照元素的右边,小于的放在其左边,之后 按照上面的过程分别 递归处理 新的序列的左右(参照元素作为划分界限)两部分,直到序列长度为1时,递归完成,则排序也结束了。 快速排序的时间复杂度: 最好为O(n*logn),最差为O(n**2) 归并排序过程: 拆分:将包含...原创 2019-11-23 02:23:08 · 133 阅读 · 0 评论 -
搜索算法之二分查找
二分法 二分法查找,就是在一个 有序的序列中,查找目标数值,比较目标值与序列中间值的大小,假设序列为递增序列,如果目标值与序列中间值相等,则退出(return True),如果目标值大于中间值,则在中间值右半部分序列中按照前面的方法递归搜索,否则在中间值左半部分序列中按照前面的方法递归搜索,递归终止条件:序列长度为1且完成比较。 算法实现 实现方法:递归法和循环法。 递归方法: def bins...原创 2019-11-22 02:10:26 · 146 阅读 · 0 评论 -
算法学习之排序算法(一)
排序算法 本次的排序算法 介绍:选择排序、插入排序和希尔(shell)排序,对于冒泡排序,可以查看另一篇文章:排序算法学习之冒泡排序。 选择排序(升序,下同)过程: 对于长度为n的序列,第一轮从n个元素中找出最小值(的位置),将其与序列第一位元素交换;然后在第2-n个元素中找到最小值,将其与第二位元素交换,按照上述过程继续 比较和交换,直到完成最后两位元素的比较和交换,排序完成。 插入排序过程:...原创 2019-11-20 06:47:13 · 131 阅读 · 0 评论 -
排序算法学习之冒泡排序
冒泡排序 冒泡排序算法,是经典的排序算法之一,是一种稳定的排序算法。 算法的时间复杂度:n*n,最优情况下,复杂度为 n。 算法稳定性:在待排序的序列中,如果存在相同的数值,在排序前后,相同数值之间的相对位置(定性)不发生改变,则为稳定算法,否则就是非稳定算法。 冒泡算法的执行过程,以升序排列为例: 1、从序列一端的起始位置开始,依次比较当前位置与下一相邻位置的数值大小,如果当前位置数值大于下一相...原创 2019-11-18 00:54:33 · 179 阅读 · 0 评论 -
数据结构学习之栈与队列
栈和队列 栈的结构特点: 先进后出,后进先出。 进口和出口相同。 队列结构特点: 先进先出。 对于普通队列,其入口和出口不同,而对于双端队列,则可以在两端实现 入队列 和 出队列。 还有一种阻塞队列,即执行入队和出队操作时,需要考虑 队列状态,比如 队列长度达到其容纳极限,此时无法执行入队操作,那么 入队这个操作会被 阻塞,直到队列有 空间可用。 数据结构的代码实现 实现语言为python,实...原创 2019-11-17 20:09:20 · 90 阅读 · 0 评论 -
数据结构学习之线性表
线性表 线性表,是由若干个数据特性相同的元素的组成有限序列。 根据实现方式的不同,可以分为顺序表和链表,顺序表依据结构的差异,可以分为一体式和分离式两种;链表可以分为单向链表、双向链表和环形链表。 本文以python编程的方式,对各种数据结构进行描述和实现。 顺序表 顺序表的结构可以分为表头和数据区两部分。 表头用于描述表的信息,表头信息通常包括表容量、已使用情况(当前表成员数量),如果是分离式结...原创 2019-11-10 02:05:14 · 132 阅读 · 0 评论