Algorithm
calmXia
这个作者很懒,什么都没留下…
展开
-
《Algorithms》4th | 第一章 基础
什么是算法?什么是数据结构?算法研究的核心问题是什么?我们为什么学习算法?什么是欧几里得算法?怎么用代码实现?算法是解决问题的思路和方法,在计算机世界中,我们指的是适合用计算机实现的解决问题的方法。计算机的操作对象是数据,算法也是作用在具体的数据对象上的。大多数算法功能(简洁、精妙、优雅)和效率(时间空间消耗)的体现都需要适当的组织数据,按照特定意图被组织的数据称为数据结构,数据结构也...原创 2019-12-20 09:12:37 · 241 阅读 · 1 评论 -
数据结构与算法 -- 11 排序(上) | 冒泡、插入、选择排序以及分析方法
文章目录引子:一. 排序算法的执行效率1.1. 有序度二. 排序算法的内存消耗三. 排序算法的稳定性引子:为什么要学习排序算法? 排序是程序员们最早接触的一类算法,也是大部分面试必考技能:手写一个简单的常见排序算法,给出时间复杂度(最好,最坏,平均);简单点的让你口述下算法原理等等。之所以这么着重考察,我的经验是一来实际软件很多场景中排序是经常用到的算法;二来排序可以考察基本的算法能力...原创 2019-08-01 23:41:11 · 186 阅读 · 0 评论 -
数据结构与算法 -- 10 递归
文章目录引子: 很多APP,公众号的商品服务有注册返佣金功能。例如 A推荐B,B推荐C…。这里A是“最终推荐人”,怎么根据这条链中的任意一个人来找到A这个“最终推荐人”呢?...原创 2019-07-18 21:18:06 · 158 阅读 · 0 评论 -
数据结构与算法 -- 09 队列 | 实际应用
文章目录原创 2019-07-10 22:32:05 · 343 阅读 · 0 评论 -
数据结构与算法 -- 08 栈 | 实际应用
文章目录1. 函数调用栈 说明:上一篇《数据结构与算法 – 08 栈》介绍了栈的数据结构定义,特性,常见操作及其复杂度。学以致用才是硬道理,本篇在此基础上收集整理一些栈在软件工程的实际应用,以此加深对栈的理解。 1. 函数调用栈函数调用栈是一个非常经典且普遍的应用。C,C++,Java等函数调用/方法调用的运行时内存过程的实现就是基于栈做的。线程运行时,操作系统会给其分配一块内存,这块内...原创 2019-07-03 15:17:48 · 289 阅读 · 0 评论 -
数据结构与算法 -- 好玩有趣的算法资料
说明:本问用来收集一些平时遇到的或是好玩有趣,或是深度干货的数据结构与算法方面的资料,体裁不限~ Python 算法的新手入门大全(Githut Star 近 50k, Fork 14k+)包括两部分内容:一是各种算法的基本原理讲解(含动画),二是各种算法的代码实现。算法原理讲解https://www.toptal.com/developers/sorting-algorithms/b...原创 2019-07-03 14:00:09 · 184 阅读 · 0 评论 -
数据结构与算法 -- 09 队列
文章目录队列(queue) 队列的数据结构特点和基本操作是? 顺序队列引子: CPU任务调度处理的速度与线程数有关但不是线性正相关,过多的线程会导致CPU频繁切换引起性能下降,所以线程池的大小是根据如任务特点等软硬件环境来设置的。 从线程池申请线程时会遇到没有空闲资源需排队等候的情况,处理这种情况会用到“队列(queue)”这种底层数据结构。 队列(queue) 队列的数据结构...原创 2019-07-08 20:38:18 · 184 阅读 · 0 评论 -
数据结构与算法 -- 08 栈
文章目录1. 栈数据结构定义和特性2. 数组和链表与栈相比,为什么选择栈呢?3. 开发时,判断该选择栈的依据是什么?4. 应用案例 4.1. 浏览器的前进和后退功能。1. 栈数据结构定义和特性典型栈结构:先进先出,后进后出。操作特性:栈是“操作受限”的线性表,受限在它只允许在一端插入和删除数据。2. 数组和链表与栈相比,为什么选择栈呢?从功能上来说,数组和链表可以代替栈。但是由于数...原创 2019-06-26 00:26:42 · 223 阅读 · 0 评论 -
数据结构与算法 -- 05 数组
文章目录数组的定义:低效的**插入**和**删除**:插入删除警惕数组的访问越界容器与数组数组为什么从 0 开始编号?数组的定义:一种线性表数据结构。用一组连续内存空间,存储一组相同类型的元素。杀手锏:通过下标和内存寻址支持随机访问,此时的时间复杂度为 O(1)。注:线性表:数据最多只有前后两个方向。还有:链表、队列、栈等。非线性表:数据之间不是简单的前后关系。如:二叉树、堆、图。...原创 2019-05-18 22:15:59 · 192 阅读 · 0 评论 -
数据结构与算法 -- 03-04 复杂度分析
文章目录一、事后统计法二、分析预测法 -- 时间、空间复杂度分析法大 O 时间复杂度表示法时间复杂度分析方法1. 只关注循环执行次数最多的一段代码;2. 加法法则:总的时间复杂度等于量级最大的那段代码的复杂度;3. 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积;4. 几种常见时间复杂度实例分析4.1. O(1)4.2. O(logn)、O(nlogn)4.3. O(m+n), O(m*n...原创 2019-05-18 22:12:46 · 3779 阅读 · 3 评论 -
数据结构与算法 -- 02 抓住重点,高效学习
文章目录一、什么是数据结构?什么是算法?二、学习重点1. `复杂度分析`2. 20 个最常用的、最基础数据结构与算法三、学习方法方法论实操一、什么是数据结构?什么是算法?重概念,但不需要深挖严格的定义。数据结构是静态的,它只是组织数据的一种方式,数据结构是为算法服务的,算法要作用在特定的数据结构之上才能发挥出功力。二、学习重点1. 复杂度分析这个概念很重要,是数据结构与算法的精髓,占据...原创 2019-04-18 09:50:19 · 197 阅读 · 0 评论 -
Algorithm -- Greedy Algorithm(贪婪算法)
求解场景:假设办了个广播节目,要让特定几个州的听众都能收听到。为此,需要决定在哪些广播台播出。每个广播台都覆盖特定的区域,即覆盖可能不止一个州,不同广播台的覆盖区域可能重叠。问:如何找出覆盖所有州的最小广播台集合?# !/usr/bin/env python# -*- coding:utf-8 -*-__author__ = "calmXia""""Greedy Algorit...原创 2019-04-12 09:44:16 · 210 阅读 · 0 评论 -
Algorithm -- Dijkstra's Algorithm (狄克斯特拉算法)
#!/usr/bin/env python# -*- coding:utf-8 -*-__author__ = 'calmXia''''狄克斯特拉算法(Dijkstra’s algorithm)-- 最快路径包含4个步骤 (1) (从起点开始)找出开销最低的节点(2) 对于该节点的邻居,检查是否有前往它们的更短路径,如果有,就更新其开销。 -- 开销指的是从起点开始的花费。 (...原创 2019-04-10 21:28:03 · 570 阅读 · 0 评论