14天阅读挑战赛
努力是为了不平庸~
算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算法的理解,同时吸收他人的奇思妙想,一起见证技术er的成长~

读书笔记

算法入门

前言:数据结构是非常重要的课程,大公司要求面试者有非常扎实的数据结构与算法能力。扎实到什么地步呢?下面是相关面试题: 1.我们通常将算法与数据结构放在一起提及,说说算法和数据结构的区别?2.对于时间复杂度是怎么理解和计算的?3. 快排的思想与复杂度是怎么计算的?从上述问题可知,这个“扎实”真的是太扎实了!对于这门课,概念,思想,代码实战都需要非常熟练,手撕是必须的.

算法相关概念

瑞士著名的科学家Niklaus Wirth教授提出:数据结构+算法=程序
算法是对特定问题求解步骤的一种描述
算法是不依赖于任何一种语言,可以C,java或流程图来描述。
算法的特性:

  • 有穷性,不会陷入死循环
  • 确定性,语句没有歧义
  • 可行性,可以通过有限次运算来实现
  • 输入/输出,有0个或多个输入,一定有输出。
    好的算法标准

    • 正确性 这是必须的如果一个算法不能保证正确性那这个算法是无意义的
    • 易读性 一般是通过遵守特定的规范比如在实际项目开发中会遵守阿里的《java开发手册》或者公司内部手册
    • 健壮性 主要是将一些特殊的情况(Bug)考虑进去
    • 高效 耗时长短,通常这也是评判一个算法好坏的标准
    • 低存储 占用存储空间小,在有些情况下会对内存有要求,例如百万级用户,一个用户的额外空间可能很小,但是百万级用户加起来是非常可观的

数据结构概念
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
简单理解就是带’结构’的数据元素的集合,他有一个独特的数据存储方式
链表,树,图都是一种数据结构

面试题:我们通常将算法与数据结构放在一起提及,说说算法和数据结构的区别?
解析: 首先瑞士著名的科学家Niklaus Wirth教授提出:数据结构+算法=程序(提高逼格),算法是解决问题的步骤或逻辑,数据结构是则是数据的一种独特存储结构。这两者就像是数据结构是搭建房屋的材料,算法是搭建房屋的说明书。(小伙伴们思考一下按照自己的想法说不用太纠结)

算法复杂度

时间复杂度

算法的时间复杂度是使用执行次数来衡量算法的效率,是一种估算方法
计算算法复杂度的方法:

  • 将所有的运行次数加起来:1+1+n+1+n+n(n-1)+n*n

  • 然后用一个T(n)=2n^2+3n+3

  • 小项和常数忽略不计,当n为10^18时,小项和常数相对最高项,是非常渺小的。例如1相对于1百万,可以忽略。

  • 然后将系数忽略

  • 最后时间复杂度为O(n^2)

    空间复杂度

    空间复杂度是计算算法运行中额外所需要的空间
    例如

    void swap(int x, int y)
    {
    int temp=x;
    x=y;
    y=temp;
    }
    

产生的额外空间为常数,所以未O(1)

常见的时间复杂度

  • O(1) 常数
  • O(log n) 对数
  • O(n) 线性时间复杂度
  • O(n*logn)
  • O(n^2) 平方
  • O(n^3) 立方
  • O(2^n) 指数
  • O(n!) 阶乘

斐波那契数列

如何解决斐波那契数列问题,例如给一个n,求第n个斐波那契数列的值?
一.直接利用公式,从n=3时开始推

  • 递推解法

    
    
  • 递归解法

读书笔记 -- 算法入门相关推荐

  1. 读书笔记——数据压缩入门(柯尔特·麦克安利斯)下

    文章目录 数据压缩入门汇总 第九章 数据建模 9.1 马尔科夫链 9.2 部分匹配预测算法PPM 9.2.1 单词查找树 9.2.2 字符的压缩 9.2.3 选择一个合理的N值 9.2.4 处理未知的 ...

  2. 读书笔记——数据压缩入门(柯尔特·麦克安利斯)中

    文章目录 数据压缩入门汇总 第六章 自适应统计编码 6.1 位置对熵的重要性 6.2 自适应VLC编码 6.2.1 动态创建VLC表 6.2.2 字面值 6.2.3 重置 6.2.4 何时重置 6.3 ...

  3. 读书笔记——数据压缩入门(柯尔特·麦克安利斯)上

    文章目录 数据压缩入门汇总 前言 第一章 概述 1.1 克劳德 • 香农 1.2 数据压缩必备知识 第二章 深入研究信息论 第三章 突破熵 3.1 理解熵 3.2 熵的用处 3.3 理解概率 3.4 ...

  4. 【《WebGL编程指南》读书笔记-WebGL入门】

    <WebGL编程指南>读书笔记 目录链接:https://blog.csdn.net/floating_heart/article/details/124001572 第二章 WebGL入 ...

  5. PID控制算法学习笔记——算法入门

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.PID的工作原理 二.控制策略 1.比例控制 2.积分控制 3.微分控制 总结 参考文章 前言 PID,就是比例( ...

  6. 读书笔记_C#入门经典(第5版)第五章_变量的更多内容

    枚举 定义:枚举定义一个类型,其中包含提供的限定值集合中的一个值. 例子 结构 定义:结构是由几个数据定义的数据结构. 数组 定义数组 For each 定义:遍历数组每一个元素. 多维数组 例子: ...

  7. 读书笔记_C#入门经典(第5版)第四章_流程控制

    布尔逻辑 逻辑运算符 && || ! 布尔赋值运算符 &= 的值为 例子:a&=b a=a&b |= 的值为 例子:a|=b a=a|b ^= 的值为 例子:a ...

  8. 读书笔记_C#入门经典(第5版)第六章_函数

    定义和使用基本函数 参数 参数数组 引用参数和值参数 值参数 引用参数 输出参数 Foreach 结构函数 函数的用法 函数的重载 定义:创建多个同名的函数,这些函数可以使用不同的参数类型. 委托 委 ...

  9. 《Hadoop权威指南》读书笔记——MapeReduce入门

    1 MR的原理 MapeReduce(简称MR)的是大数据计算引擎,相对于Linux awk等工具而已,最大的优势是可以分布式执行,充分利用计算机的多核性能. 一个MR作业(job)是客户端需要执行的 ...

最新文章

  1. java jdk安装 以及myeclipse安装
  2. 使用podspec创建iOS插件
  3. redis 3.x windows 集群搭建
  4. SAP ABAP实用技巧介绍系列之 使用XSLT替换xml中指定node的value
  5. python冒泡排序原理_如何实现python冒泡排序算法?
  6. SpringBoot 2.x (3):文件上传
  7. 对蚊子个人博客进行了彻底的改造
  8. 避重就轻:Intel的垄断抗辩
  9. fullcalendar 只保留周_周末大利好!重磅全球指数加仓,210亿资金涌向A股「投资周历来了」...
  10. 福建师范计算机应用基础作业,福建师范大学《计算机应用基础》在线作业一答案.docx...
  11. VxLAN技术基本原理
  12. python输入直角三角形两条直角边、输出斜边长_用C++输入直角三角形的两条直角边长,调用平方根函数sqrt来求斜边的长度。...
  13. 汇总报表与合并报表之如何汇总报表
  14. 洛谷P1510 精卫填海(简单的dp)
  15. 具象化Magento第一章【1.1】
  16. 永远闪亮,网的眼睛 (转)
  17. 传智播客创始人张孝祥因病去世(转)
  18. POJ 3264.Balanced Lineup-RMQ(ST)详解
  19. mysql条件增量同步命令_DataX3 Mysql增量同步ES
  20. SQL中的Exists 用法解释

热门文章

  1. Geoffrey Hinton:从神经网络黑暗时代的坚守到今天的胜利
  2. 自定义Android键盘
  3. win10新建虚拟机网络配置未连接服务器,win10虚拟主机怎么联网(win10虚拟机连不上网)...
  4. 教你如何学模电——三极管篇
  5. MFC使用CFile类进行输入输出到文本文件
  6. paramiko使用
  7. fmc接口定义_FMC接口说明
  8. 远程调试工具之weinre
  9. qt 之usb(hid)与单片机通信
  10. ROS入门-ROS的安装及编写简单的节点talker和listener