算法是计算机解决问题的步骤。是以人类可以理解的方式描述的,用于编写程序之前。程序是计算机可以理解的语言。同一个算法,不同的编程语言,程序就会不同。不同写程序的人,编程也会不同。
问题:对n个数字进行排序
算法设计:
- 方法1:全排列算法。
- 生成n个数的数列(不和前面重复)
- 如果生成的数列从小到大排序,将其输出,否回1
- 方法2:选择排序
- 找n个中最小一个,放最左边
- 找n-1中找最小一个,放第2个位置
- 方法3:......
算法的选择:运行时间,空间资源...
示例:
方法1:运气好,很快出现正确结果,运气不好,最后一个出现正确结果。计算时间是
\[n!=n(n-1)(n-2)\cdots3\cdot2\cdot1\]
方法2:计算时间
\[n+(n-1)+(n-2)+\cdots3+2+1=\frac{n(n-1)}{2}\leqslant n^{2}\]
方法1大于10^20年,宇宙大爆炸到现在才10^11年。方法2是2ns。算法对计算方法的影响很大。
如何计算运行时间?
使用“步数”来描述运行时间,“1步”就是计算的基本单位。
运行时间的表示方法
O这个符号的意思是“忽略重要项以外的内容”,读音同order。
\[O(n^2)\]算法的运行时间最长也就是n^2的常数倍