算法入门
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.算法的特征
> 1.有穷性
>
> 2.确切性
>
> 3.输入项
>
> 4.输出项
>
> 5.可行性
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.求和公式
> 1+2+...+N1+2+...+N1+2+...+N
> (1+N)∗N/2(1+N)*N/2(1+N)∗N/2
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.时间频度 T(N)
一个算法的语句执行的次数称为语句频率或者时间频度,表示为T(n)T(n)T(n)
> T(n)=3∗n+4T(n)=3*n+4T(n)=3∗n+4
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4.时间复杂度O(N)
1.常见排序
> * 选择排序 O(n^2)
> * 冒泡排序 O(n^2)
> * 插入排序 O(n^2)
> * 桶排序 O(n+k)
桶排序代码如下:
2.常见时间复杂度
O(1),O(LOGN),O(N),O(NLOGN),O(N2),O(N3),O(2N),O(N!).O(1),O(LOGN),O(N),O(NLOGN),O(N^2),O(N^3),O(2^N),O(N!).O(1),O(LOGN),O(N),O(NLOGN),O(N2),O(N3),O(2N),O(N!).
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.运算量随着规模的变化
运算量 n!n!n! 2n2^n2n n3n^3n3 n2n^2n2 nlog2nnlog_2nnlog2 n nnn 最大规模 11 26 464 10^4 4.5*10^6 10^8 速度扩大 11 27 584 14142 8.6*10^6 2*10^8
5.空间复杂度(256M)
LONGLONGLONG LONG=>3.2∗107LONG =>3.2*10^7LONG=>3.2∗107
INT=>6.4∗107INT=>6.4*10^7INT=>6.4∗107
6.对数
* a∗a∗...∗a=>ax=Na*a*...*a=>a^x=Na∗a∗...∗a=>ax=N
* x=logaNx=log_aNx=loga N
7.模拟算法
1.审题立意
不遗漏 分析题目样例
2.分析关系
最好用流程图或简单表格列出
3.编写程序
用相应的语言、逐步求精的方法描述具体的算法
4.调试运行
输出中间重要过程
5.构造数据
构造一些更复杂、更全面的测试数据来检查程序的正确性
8.如何让程序正确性更高——对拍
对拍代码
缺点:1.只要求输出正解;2.数据范围过大