数据结构与算法——小白学数据结构
文章平均质量分 88
数据结构学完不用就会很容易忘记,整理此专栏目的是为了快速回忆起学过的数据结构,再来看这些数据结构与算法,你可能就会发现它的有趣之处。(其中代码大部分为python实现)
土豆洋芋山药蛋
理性的生存,诗意的栖居。
展开
-
小白学数据结构——零、算法初步(算法分类及最大子数组小试牛刀)
1. 为啥要学数据结构?应用:机器学习,数据挖掘,自然语言处理,密码学,计算机图形学研究:时空复杂度问题找工作常用:贪心,分治,动态规划,树,图2.什么是算法? 把大象装进冰箱分为几步?打开冰箱门,把大象放进去,关上冰箱门。没错,这是一个算法。算法的条件:又穷性(在人类毁灭前算完)确定性(你好漂亮,我有点喜欢你。计算机:这TM怎么衡量)可行性(人类能做的到的)输入&输出3.常原创 2017-11-08 11:09:47 · 1107 阅读 · 0 评论 -
小白学数据结构——一、线性结构(数组&链表)
数组数组是应用最广泛的一种数据结构,常常被植入到编程语言中,作为基本数据类型使用,因此,在一些教材中,数组并没有被当做一种数据结构单独拿出来讲解(其实数组就是一段连续的内存,即使在物理内存中不是连续的,在逻辑上肯定是连续的)。其实没必要在概念上做纠缠,数组可以当做学习数据结构的敲门砖,以此为基础,了解数据结构的基本概念以及构建方法 数据结构不仅是数据的容器,还要提供对数据的操作方法,比如检索、插入原创 2017-11-12 17:22:04 · 837 阅读 · 0 评论 -
小白学数据结构——一、线性结构(栈和队列)
1. 栈和队列定义存放数据的线性表操作:入栈/队列,出栈/队列,判断满/空空间复杂度O(n)单次操作时间复杂度:O(1)区别: 栈:先进后出队列:先进先出 实现数组和链表都可以指针(辅助变量) 栈顶/底指针队头/尾指针关键:出入元素的同时移动指针 详细实现代码请查看 http://blog.csdn.net/wtfmonking/article/details/169891原创 2017-11-08 22:14:11 · 809 阅读 · 0 评论 -
小白学数据结构——二、树与堆(基本概念及二叉树、二叉堆的python实现)
树1.基本概念什么是树? 树是一种数据结构,可以表示层次关系。形状像一棵树。 最上面;树根 中间:树枝 最下:树叶树的定义 它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点没有父节点的节点称为根节点每一个非根节点有且只有一个父节点除了根节点外,每个原创 2017-11-11 15:11:19 · 4022 阅读 · 1 评论 -
小白学数据结构——三、图(基本概念及python实现)
图的基本术语有向图:图中的每条边都有方向的图叫有向图。此时,边的两个顶点有次序关系,有向边 < u,v>成为从顶点u到顶点v的一条弧,u成为弧尾(始点),v成为弧头(终点),即有向图中弧 < u,v>和弧 < v,u> 表示不同的两条边。无向图:图中的每条边没有方向的图。边的两个顶点没有次序关系,无向图用边(u,v)表示对称弧< u,v>和< v,u>。权:图中的边或弧上有附加的数量信息,这种原创 2017-11-13 00:07:12 · 3567 阅读 · 1 评论 -
小白学数据结构——四、排序算法Python(冒泡、选择、快速、插入、希尔、归并排序)
排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 内部排序的分类: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,快速排序,插入排序,希尔排序,归并排原创 2017-11-14 11:37:44 · 6814 阅读 · 21 评论 -
小白学数据结构——四、排序算法Python(桶、计数、基数排序)
在早些的文章中,我们讲过了常见的比较排序算法,详情请回顾: 小白学数据结构——四、排序算法Python(冒泡、选择、快速、插入、希尔、归并排序)那么我们这次就来看一些不是基于比较的排序算法,包括了桶排序,计数排序,基数排序。1.桶排序说起桶排序,就先来介绍一下我们加下来要用的桶,说的就是下面这个桶(当然不是用来装垃圾的),桶盖表示游标index,桶身上表示该游标下的数据data,没错原创 2018-01-22 17:13:10 · 3566 阅读 · 0 评论 -
小白学数据结构——五、查找(哈希表&布隆过滤器)
哈希表 使用哈希表可以进行非常快速的查找操作,查找时间为常数,同时不需要元素排列有序 python的内建数据类型:字典,就是用哈希表实现的哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。定义存放数据的集合(原创 2017-11-10 21:23:51 · 1306 阅读 · 0 评论