1.4算法分析

1、 算法分析:

两个主要任务=正确性(不变形×单调性)+复杂度

C++等高等语言的基本指令,均等价于常数条RAM的基本指令;在渐进意义下,二者大体相当。
分支转向:goto //算法被隐藏的灵魂
迭代循环:for、while等本质上是if+goto
调用、递归(自我调用) 本质上也是goto

复杂度分析的主要方法:
迭代:级数求和
递归:递归跟踪+递推方程
猜测+验证

2、级数

算术级数:与末项平方同阶
T(n)=1+2+。。。+n=O(n2
幂方级数:比幂次高出一阶
T(n)=12+22+。。。+n2=O(n3
几何级数(a>1):与末项同阶
收敛级数:O(1)
调和级数:θ(logn)
对数级数:θ(nlogn)

3、起泡排序

问题:给定n个整数,将他们按照非降序列排列
观察:有序序列中,任意一对相邻元素都是顺序,无序序列中,总有一对相邻元素逆序。
扫描交换:依次比较每一对相邻元素,如有必要,交换次序,直至整趟扫描都没有进行交换,则排序完成,否则继续扫描。

void bubblesort(int A[],int n){
	for(bool sorted=false;sorted=!sorted;n--){//逐趟扫描,完全有序时停止,如果上一趟发生交换,则sorted为false,在循环开始时,被sorted=!sorted初始化为true
		for(int i=1;i<n;i++){
			if(A[i-1]>A[i]){
				swap(A[i-1],A[i]);//交换次序函数
				sorted=false;//清除有序标志
			}
		}
	}
}

4、封底估算Back-Of-The-Envelope Calculation

这种估算几乎不需要比较,只需要用头脑去抓住问题的主要方面尽快的得出一个问题的足够近似的估计。
实例:全国人口普查1e9,估算用冒泡和归并排序的时间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值