loannes's blog

分类 · 笔记

首页

关于

归档

loading..
排序

算法图解笔记(三)\-\--快速排序

=============================== 算法的核心思想-----分而治之(D&C) D&C的理解过程: 找出基线条件,这种条件必须尽可能简单。 不断将问题分解,直到符合基线条件。 通过下面这道题来加深对D&C的理解: 将这块长为1680m,宽640m的地均匀的分成方块,且分出的方块尽可能的大。 按照D&C的解题步骤: 基线条件: 如果长是宽的整数倍,那么就可以正好将他们分割成等分的正方形。然后通过从大到小的顺序进行筛选优先找到的肯定是最大的正方形。 按照题目中的理解就是:只需找出1680余64之间的最大公约数即可。 递归条件: 通过欧几里得算法可以得知:‘适用于这小块地的最大方块同样也适用于整块地的最大方块’。这句话正好符合了分而治之的核..

更多
loading..
递归

算法图解笔记(二) \-\-- 递归

============================= 栈 每当调用函数时,计算机会将函数调用设计的所有变量存贮到内存中。 在函数内调用函数时,内部的函数在调用完成后会返回到上一次函数并且会被踢出栈堆。未完成的函数不会被踢出栈堆。 创建递归函数时刻要记得基线条件和递归条件 一段关于栈的代码解读 def fact(x): if x==1: return 1 else: return x*fact(x-1) 代码解读:(以x=3为例) 当x=3,程序进入了else条件并且执行递归,随后创建了x=2的内存块被将其放入栈堆中。 执行x=2的函数,因为此时x不等于1所以还是进入了else条件执行递归,随后创建了x=1的内存块并将其放入栈堆中。 此时x=1则进入第一个条件返回1,该轮函数..

更多
数据结构

大话数据结构第二章 算法

======================= 什么是算法 算法表示决绝特定问题的求解步骤,由一个或多个操作组成。 算法的特性 输入输出、有穷性、确定性、可行性。 输入输出: 不一定有输入但必须有输出 有穷性 造成死循环的代码不是算法 确定性 算法的每一个步骤都有确定的含义,无需存在多余的步骤。 可行性 算法的每一步都必须在计算机上运行 算法的时间复杂度 公式: ±----------------------------------±----------------------------------+ | 1 | T(n) = O(f(n)) | ±----------------------------..

更多
loading..
排序

算法图解笔记(一) \-\-- 选择排序、二分查找

========================================= 二分查找 是一个在有序元素列表中的查找的算法 原理:如这个列表长度是10000,通过算法排除不满足条件的另一半来查找。 比如从100个数字中找到某个数字的索引,可以先找到50进行比较来缩小范围。如果大于50就再拿75做比较,以此类推,直到找到该数字。 这样的二分算法能从原先的暴力查找(最坏情况下)100次减少到7次。 记做公式: $$log_2 n$$ 算法运行时间 运行时间的增速:随着数据量的增加,运行时间会出现递增的情况。优秀的算法增速越少,比如二分查找和简单查找在10亿个算法的情况下,简单查找需要11天才能查找玩,而二分查找只需要32毫秒。 算法的速度指的的操作数的增速。也就是时间复杂度 数组 缺点:添加新元素如果遇..

更多
数据结构

大话数据结构第一章 数据结构

=========================== 所有能够被计算机程序处理和可以输入到计算机中的都可以作为数据。不单单只有数值、数值类型,MP3,图片等都是数据。 数据元素与数据项的区别 数据元素是由数据项组成的单位,如某公司中的一名程序员就是数据元素。 而数据项则是由数据元素拆分而成的最小单位,这名程序员的姓名,年龄就是数据项了。 数据对象(简称为数据) 数据对象就是性质相同的数据元素的集合。某个数据元素是程序员A,程序员A、程序员B、程序员C统称为程序员,这个程序员就是数据对象。 数据结构 是相互之间存在一种或多种特定关系的数据元素的集合。 比方说:N名iOS程序员 + N名Android程序员 + N名后端程序员可以组成移动开发小组。 N名Unity程序员 + N名后端开发可以组成游戏开发小组。..

更多
loading..
TCP/IP

【笔记】TCP/IP---链路层

以太网 是当今现有局域网采用的最通用的通信协议标准。以太网络使用CSMA/CD(载波监听多路访问及冲突检测)技术,并以10M/S的速率(仅指标准以太网的速率而已)运行在多种类型的电缆上。以太网与IEEE802.3系列标准相类似 数据封装 上一篇笔记有讲到过封装,数据封装过程是由应用程序开始发送数据,经过传输层和网络层并被封装最后到数据链路层封装后转换成比特流。 封装格式 最常用的封装格式为RFC 894(以太网的封装格式)。下图是RFC 894与另外一种封装格式RFC 1042(IEEE802.2/802.3)的区别 目的地址:也就是网卡的硬件地址,6个字节,指明帧的接受者 源M地址:网卡的硬件地址,6个字节,指明帧的发送者 长度:2个字节,指明该帧数据字段的长度,但不代表数据字段长度能够达到(2^16..

更多
loading..
TCP/IP

【笔记】TCP/IP---IP:网际协议

简介 IP是TCP/IP协议族中最核心的协议。所有的TCP、UDP、ICMP和IGMP数据都以IP数据报格式传输。IP也决定了接收到的数据将被分发到哪个网络进程。 IP地址 IP地址(Internet Protocol Address),缩写为IP Adress,是一种在Internet上的给主机统一编址的地址格式,也称为网络协议(IP协议)地址。它为互联网上的每一个网络和每一台主机分配一个逻辑地址,常见的IP地址,分为IPv4与IPv6两大类,当前广泛应用的是IPv4,目前IPv4几乎耗尽IPv6号称可以为世界上每一粒沙子都编上地址;如无特别注明,一般讲的的IP地址所指的是IPv4。 MAC地址 MAC(Media Access Control,介质访问控制)地址,或称为物理地址,也叫硬件地址,用来定义网..

更多
loading..
TCP/IP

【笔记】TCP/IP---简介

分层 网络协议通常分为不同的层次进行开发,每一层分别负责不同分通信功能。 TCP/IP协议族分为四层 链路层: 与硬件相关,通常用来处理计算机中的网卡,设备驱动等。 ####运输层: 有两个不同的传输协议— TCP(传输控制协议) 和 UDP(用户数据报协议)。 平时开发中与数据库交互的接口用到的就是运输层 ####网络层: 处理分组在网络中的活动。IP协议,ICMP协议都是网络层。IP协议不可靠,传输不稳定,不一定能接收到而且可能是无序的。 ####应用层: 任何TCP/IP都会实现这些应用程序,相当于是捆绑在TCP/IP上的程序 Telnet远程登录 FTP文件传输协议 SMTP简单邮件传输协议 SNMP简单网络管理协议 一个局域网内有两台主机,都运行ftp协议。其中涉及到哪些网络层? 图中是一..

更多
123