什么是算法?
算法就是计算或者解决问题的步骤。
比如“将随意排列的数字按从小到大的顺序重新排列”“寻找出发点到目的地的 最短路径”,等等。
计算机擅长高速执行一些基本命令,但无法执行复杂的命令。
此处的“基本命令”指的是
“做加法”或者“在指定的内存地址上保存数据”等。
算法相当于是怎么利用基本命令解决问题。
如何选择算法?
最为重视的是算法的运行时间,即从输入数据到输出结果这个过程所 花费的时间。
如何计算运行时间?
数据量和运行时间的关系
举个例子,下面8个数字,把它们按从小到大的顺序重新
这里选择的算法是:
1、从数列中寻找最小值
2、将最小值和数列最左边的数字进行交换,排序结束。回到1
1:从左到右一个一个判断,假设判断的时间是Tc
2:交换的时间假设为Ts
那
么,①和②总共重复 n 次,每经过“1 轮”,需要查找的数字就减少 1 个,因此总的运行时间如下
虽说我们已经求得了运行时间,但其实这个结果还可以简化,
Tc 和 Ts 都是基本单位,与输 入无关。
会根据输入变化而变化的只有数列的长度 n,所以接下来考虑 n 变大的情况。
n 越大, 上式中的 n2 也就越大,其他部分就相对变小了。也就是说,对式子影响最大的是 n的平方。
所以,我
们删掉其他部分,将结果表示成下式右边的形式。
通过这种表示方法,我们就能大致了解到排序算法的运行时间与输入数据量 n 的平方成正比。
O 这个符号的意思是“忽略重要项以外的内容”,读音同 Order。