算法(Algorithm) 是利用计算机解决问题的处理步骤。

算法是古老的智慧。如《孙子兵法》,是打胜仗的算法。

算法是古老智慧的结晶,是程序的范本。

学习算法才能编写出高质量的程序。

懂得了算法,游戏水平会更高。

比如下棋,如果懂得棋谱,就不需要每次考虑“寻找最好的一步棋”,按照棋谱

就可以走出最好的几步棋。棋谱是先人们智慧的结果,因此掌握多种棋谱的人更

容易在对弈中获得胜利。

算法的学习类似学习游戏攻略。

算法是编写好程序的“棋谱”。

算法必须满足“有效性”和“终止性”。

  • 算法,必须要为给定的任务给出正确的结果,这就是算法的有效性。
  • 算法,最终必须要确保停止。

断点是表示算法“有效性”的方法之一。

算法的种类:

1、技术计算

欧几里德相除法 (最大公约数)

高斯消元法 (联立方程组)

梯形法 (定积分)

迪杰斯特拉法 (最短路径)

埃拉托色尼筛法 (素数)

2、排序

将一行数据从小到大(升序),或从大到小(降序)排序的算法

简单选择法

简单交换法 (冒泡排序)

简单插入法

希尔排序

归并排序

快速排序

3、查找

从大量数据中定位目标数据的算法。

线性查找 (linear search)

二分查找 (binary search)

4、字符串模式匹配

从给定的字符串中寻找指定字符串位置(子字符串)的算法

简单字符串匹配

KMP法

BM法

算法的基础——结构化程序设计的思想

1、顺序结构

2、选择结构

3、循环结构

算法由上述三种结构的组合来进行的。

程序语言的奥妙:算法解读 ——读书笔记的更多相关文章

  1. 【2018.08.13 C与C++基础】C++语言的设计与演化读书笔记

    先占坑 老实说看这本书的时候,有很多地方都很迷糊,但却说不清楚问题到底在哪里,只能和Effective C++联系起来,更深层次的东西就想不到了. 链接: https://blog.csdn.net/ ...

  2. 数据结构与算法JavaScript 读书笔记

    由于自己在对数组操作这块比较薄弱,然后经高人指点,需要好好的攻读一下这本书籍,原本想这个书名就比较高深,这下不好玩了.不过看着看着突然觉得讲的东西都比较基础.不过很多东西,平时还是没有注意到,故写出读 ...

  3. <算法图解>读书笔记:第3章 递归

    第3章 递归 3.1 递归 程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一 ...

  4. 《改善python程序的91个建议》读书笔记

    推荐 <改善Pthon程序的91个建议>是从基本原则.惯用方法.语法.库.设计模式.内部机制.开发工具和性能优化8个方面深入探讨编写高质量python代码的技巧.禁忌和最佳实践. 读书就如 ...

  5. 《Effective C#中文版:改善C#程序的50种方法》读书笔记

    作者: suyan010203  来源: 博客园  发布时间: 2011-07-09 14:47  阅读: 8988 次  推荐: 4                   原文链接   [收藏] 从去 ...

  6. pwn学习日记Day17 《程序员的自我修养》读书笔记

    静态链接章小结 本章首先学习了静态链接的第一步骤,即目标文件在被链接成最终可执行文件时,输入目标文件中的各段是如何被合并到输出文件中的,链接器如何为它们分配在输出文件中的空间和地址.一旦输入段中的最终 ...

  7. pwn学习日记Day15 《程序员的自我修养》读书笔记

    程序编译链接过程: 1.调用cc1程序,这个程序实际上就是GCC的C语言编译器,它将"hello.c"编译成一个临时的汇编文件"/tmp/ccUhtGSB.s" ...

  8. pwn学习日记Day14 《程序员的自我修养》读书笔记

    目标文件:计算机科学中存放目标代码的计算机文件,包含着机器代码,代码在运行时使用的数据,调试信息等,是从源代码文件产生程序文件这一过程的中间产物. 目标代码(objectcode)指计算机科学中编译器 ...

  9. 《程序员的自我修养》读书笔记 - dllimport

    Math.c  { __declspec (dllexport)  double Add (xx, xx) {...}} MathApp.c  { __declspec(dllimport) doub ...

随机推荐

  1. 【转】HashMap的工作原理

    很好的文章,推荐Java的一个好网站:ImportNew HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hasht ...

  2. MV、MVC、MVP、MVVM简介,对MVC不确定了。

    参考: http://www.cnblogs.com/changxiangyi/archive/2012/07/16/2594297.html http://www.jcodecraeer.com/a ...

  3. Client-Side UI Automation Provider - WinForm Sample

    Client-Side UI Automation Provider -  WinForm Sample 2014-09-15 源代码 目录 引用程序集实现提供程序接口分发客户端提供程序注册和配置客户 ...

  4. 《OD学Flume》20160806Flume和Kafka

    一.Flume http://flume.apache.org/FlumeUserGuide.html Flume是一个分布式的,可靠的,可用的,非常有效率的对大数据量的日志数据进行收集.聚集.移动信 ...

  5. CodeSmith datagridview属性

    private void button1_Click(object sender, EventArgs e) //将数据库里的数据直接显示在datagridview1里面 { SqlConnectio ...

  6. android开发找不到模拟器(PANIC: Could not open:)解决办法

    android开发找不到模拟器(PANIC: Could not open:)解决办法   2013/4/3 17:44:15 0人评论 213次浏览 分类:android开发 在系统环境变量设置名为 ...

  7. RAD DELPHI XE5的android开发环境配置

    RAD XE5 支持本地化跨平台编译(IOS,OS-X,WIN 64,WIN32,ANDROID) 对于android的开发环境,XE5支持模拟器,和真机设备两种模式: 1. 模拟器:(支持4.0.3 ...

  8. tableView的设置

    TableView的设置 1.设置table头部和底部的view // 底部(宽度固定是320) tableView.tableFooterView = footer; // 头部(宽度固定是320) ...

  9. vc判断文件是否存在

    #include <io.h> #include <stdio.h> #include <stdlib.h> void main( void ) { /* Chec ...

  10. Annotation(jdk5.0注解)复习(转自http://3w_cnblogs_com/pepcod/)

    package annotation.test; import java.lang.annotation.ElementType; import java.lang.annotation.Retent ...