什么是算法?

算法就是计算或者解决问题的步骤。

比如“将随意排列的数字按从小到大的顺序重新排列”“寻找出发点到目的地的 最短路径”,等等。

计算机擅长高速执行一些基本命令,但无法执行复杂的命令。
此处的“基本命令”指的是 “做加法”或者“在指定的内存地址上保存数据”等。

算法相当于是怎么利用基本命令解决问题。

如何选择算法?

最为重视的是算法的运行时间,即从输入数据到输出结果这个过程所 花费的时间。

同一个问题,不同算法执行的时间可能天差地别

如何计算运行时间?

数据量和运行时间的关系

举个例子,下面8个数字,把它们按从小到大的顺序重新
image.png
这里选择的算法是:
1、从数列中寻找最小值
2、将最小值和数列最左边的数字进行交换,排序结束。回到1

1:从左到右一个一个判断,假设判断的时间是Tc
2:交换的时间假设为Ts

那 么,①和②总共重复 n 次,每经过“1 轮”,需要查找的数字就减少 1 个,因此总的运行时间如下
image.png

虽说我们已经求得了运行时间,但其实这个结果还可以简化,

Tc 和 Ts 都是基本单位,与输 入无关。

会根据输入变化而变化的只有数列的长度 n,所以接下来考虑 n 变大的情况。

n 越大, 上式中的 n2 也就越大,其他部分就相对变小了。也就是说,对式子影响最大的是 n的平方。

所以,我 们删掉其他部分,将结果表示成下式右边的形式。
image.png

通过这种表示方法,我们就能大致了解到排序算法的运行时间与输入数据量 n 的平方成正比。

O 这个符号的意思是“忽略重要项以外的内容”,读音同 Order。