虽然在上篇讲到了程序的构成,但是要想修炼,还得有好的灵气走向,那么寻找好的算法就是寻找一个更好的流遍身体的灵气走向。
接下来,让我们深入探索算法的奇妙世界,揭开它神秘的面纱。
:(这篇就用很通俗的话来描述算法
目录
在本专栏的上一篇也就是“灵气的运行”中讲到过算法的基本定义,也写了第一个C语言程序。
算法:计算的核心灵魂
计算机的本质在于计算,计算的步骤就是算法。简单来说,算法就是解决问题的一系列明确指令,它指导计算机如何从输入数据出发,经过一系列处理,最终得出所需的输出结果。
算法的多样表现形式
算法并非仅局限于代码编写这一种方式。在日常生活中,我们常用的自然语言、直观的流程图以及简洁的伪代码,都能有效地表达算法。
- 自然语言:用人们日常使用的语言描述算法,优点是通俗易懂,缺点是有些表达可能会有歧义
- 流程图:用图形符号和流程线来表达算法执行的过程,之后的文章中我也会使用到以用来解释一些较为复杂的代码
- 伪代码:伪代码是一种介于自然语言和正式编程语言之间的表达方式,它兼具两者的优点,既能简洁地表达算法思路,又具有一定的编程结构,便于向实际代码转换
人类与计算机:思维方式的本质差异
人类和计算机在思维方式上存在着根本性的区别,以数学计算为例:
人类在进行数学运算时,通常会借助各种公式和经验,比如我们从小就烂熟于心的九九乘法表。而计算机的世界则简单纯粹得多,它只认识 0 和 1,通过电路的开与关来进行信息处理和运算。
常见简单算法解析
了解了算法的基本概念以及人类与计算机的思维差异后,我们以数学问题为切入点,介绍两种常见的简单算法。
枚举法:穷尽所有可能
考虑方程 2x = 4 的求解过程 | |
---|---|
人类求解思路 | 计算机枚举过程 |
运用代数运算规则 将方程变形为: x = 4 / 2 从而快速得出: x = 2 | 采用枚举法,从可能的取值范围中逐个尝试。 先假设 x = 1,计算 2x 得到 2,不等于 4; 再尝试 x = 2,此时 2x = 4,找到了正确答案 |
枚举法就是这样一种简单直接的算法,它将所有可能的结果一一列举出来,直到找到符合条件的解。
:真人,这样虽然简单又粗暴,但是一旦要计算的内容庞大起来,不就太消耗计算机的算力了吗?
- 算力:是计算机或其他计算设备进行数据处理和运算的能力,算力是有限的资源
要一个没那么麻烦的算法吗?有的兄弟,有的。
二分法:高效的搜索策略
现在换一道数学题:求解方程 2x + 1 = 5,并限定 x 的取值范围在 (0, 10) 之间
2x+1=5 |
首先,我们取范围的中间值,假设 x = 5,计算 2 * 5 + 1 = 11,结果大于 5,这表明 x 的实际值应该小于 5 |
于是,我们将搜索范围缩小到 (0, 5)。接着,再次取中间值,比如 x = 2,计算 2 * 2 + 1 = 5,恰好等于目标值,从而找到了方程的解 |
二分法的核心思想是,对于有序的数据集合(在这个例子中是给定范围内的数值),通过不断将搜索区间缩小一半,快速定位到目标值。
这种方法在处理大规模数据时,能够显著提高搜索效率,所以常用在方程求根、数据查找等领域。
算法世界的无限可能
随着时代的飞速发展,算法领域也在不断创新和拓展,涌现出了许多算法。在后续的学习旅程中,我们将了解这些算法。
四种不同语言的Hello,world
现代编程语言很多,但它们之间的差异相较于几十年前已经大大缩小。为了直观感受不同语言的特点,我们以经典的 “Hello, World” 程序为例进行展示。
python:简洁优雅
print("Hello, world")
Python 以其简洁明了的语法著称,仅需一行代码就能完成输出任务,非常适合初学者快速上手。
Java:稳健强大的通用语言
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world");
}
}
Java 具有严格的语法规范和强大的面向对象特性,适用于开发大型企业级应用和安卓应用等。
- 面向对象:把现实里的东西变成程序的一部分
- 对象:对现实事物的抽象表示
JavaScript:前端开发
console.log("Hello, world");
JavaScript 主要用于网页前端开发,能够为网页添加丰富的交互功能,在浏览器环境中运行,为用户带来更加生动的体验。
- 前端开发:创建 Web 页面或 app 等前端界面给用户的过程
C++:性能优选
#include <iostream>
int main() {
cout << "Hello, world" << endl;
return 0;
}
C++ 结合了高级语言的便利性和低级语言对硬件的直接操控能力,在系统软件、游戏开发等对性能要求极高的领域表现出色。
C:奠定基础的经典语言
#include <stdio.h>
int main() {
printf("Hello, world\n");
return 0;
}
C是现代很多编程语言的基础。具有高效、灵活等特点,广泛应用于嵌入式系统开发、操作系统底层实现等领域,正如我之前所说,只要计算机的架构不变,C语言就永远流行。
上述举例的这几种语言输出"Hello,world"时,有的简单,有的容易。在实际应用中,我们应根据具体的需求和领域,选择最合适的编程语言,以达到事半功倍的效果。
同时,掌握一门编程语言后,再学习其他现代语言也会变得更加轻松,因为它们在很多概念和编程思想上是相通的。
小结
如果你简单理解了这一篇,恭喜你,修仙界(计算机)的炼气的大门向你敞开。