
数据结构
窗口看到月雅湖
千里之行,始于足下。关注机器学习,图像分类、目标检测、目标识别等深度学习领域。
邮箱:17764591637@163.com
展开
-
数据结构---单向链表(Python)
最近刷LeetCode,涉及到了很多链表的内容,都暂时跳过了。学习了一下传播智客的Python版数据结构,做一些笔记吧。单项链表单项链表也叫单链表,是链表中最简单的一种形式,它的每一个节点包含两个域,一个称为信息域(元素域),另一个称为链接域(指针域)。其中链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。单链表节点单元如下图所示:表元素域elem用来存放具体的...原创 2019-05-17 10:05:19 · 305 阅读 · 0 评论 -
数据结构---快速排序(Python)
快速排序快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。步骤为:从数列中挑出一个元素,称为"基准"(pivot), 重新排序数列...原创 2019-06-11 15:44:58 · 144 阅读 · 0 评论 -
数据结构---插入排序(Python)
插入排序插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。def insert_sort(nums): for i in range(1,len(nums)): ...原创 2019-06-11 15:10:30 · 270 阅读 · 0 评论 -
数据结构---选择排序(Python)
选择排序选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一...原创 2019-06-11 14:57:44 · 217 阅读 · 0 评论 -
数据结构---冒泡排序(Python)
冒泡排序冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。 对每一...原创 2019-06-11 14:45:10 · 151 阅读 · 0 评论 -
数据结构---双端队列(Python)
双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。操作Deque() 创建一个空的双端队列 add_front(item) 从队头加入一个item元素 add_rear(item) 从队尾加入一个item元素 remov...原创 2019-06-10 20:51:41 · 226 阅读 · 0 评论 -
数据结构---队列的实现(Python)
队列的实现同栈一样,队列也可以用顺序表或者链表实现。操作Queue() 创建一个空的队列 enqueue(item) 往队列中添加一个item元素 dequeue() 从队列头部删除一个元素 is_empty() 判断一个队列是否为空 size() 返回队列的大小class Queue(object): def __init__(self): sel...转载 2019-06-10 20:35:16 · 163 阅读 · 0 评论 -
数据结构---栈(Python)
栈结构实现栈可以用顺序表实现,也可以用链表实现。栈的操作Stack() 创建一个新的空栈 push(item) 添加一个新的元素item到栈顶 pop() 弹出栈顶元素 peek() 返回栈顶元素 is_empty() 判断栈是否为空 size() 返回栈的元素个数class Stack(object): def __init__(self): s...原创 2019-06-10 20:19:58 · 143 阅读 · 0 评论 -
数据结构---双向链表(Python)
双向链表一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。操作is_empty() 链表是否为空 length() 链表长度 travel() 遍历链表 add(item) 链表头部添加 append(item) 链表尾部添加 insert(p...原创 2019-06-10 20:09:05 · 199 阅读 · 0 评论 -
数据结构---单向循环链表(Python)
上周去面试,数据结构真的太重要了。自己掌握的不是很好,吃了很大的亏。路漫漫其修远兮,吾将上下而求索.......单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。操作is_empty() 判断链表是否为空 length() 返回链表的长度 travel() 遍历 add(item) 在头部添加一个节点 append(it...原创 2019-06-10 19:19:13 · 160 阅读 · 0 评论 -
数据结构---归并排序(Python)
归并排序归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。def merge_sort(nums): if len(nums) <= 1: ...原创 2019-06-12 18:44:30 · 220 阅读 · 0 评论 -
数据结构---希尔排序(Python)
希尔排序希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序过程希尔排序的基本思想...原创 2019-06-12 16:46:54 · 213 阅读 · 0 评论 -
数据结构---二分查找(Python)
二分法查找二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后...原创 2019-06-12 10:47:27 · 167 阅读 · 0 评论