邓公总结课

python list

python 语法一般从list开始讲起。
list 插入、删除元素比较容易,查找比较慢。

两种对list进行翻转操作。

def reverse_1(L){
	lo,hi = 0, len(L)-1 #从首末元素开始   平行赋值
	while lo<hi #依次令对称元素
		L[lo],L[hi] = L[hi], L[lo]  #互换,然后
		lo,hi = lo+1,hi-1	#考察下一对元素
	return L
}
def reverse_1(L){
	for i in range(len(L)):
		L.insert(i, L.POP() ) 
	return L
}

实际上python的list列表底层是用向量搭建的。因此第二种种方法是n方,第一种是n

复杂度下界—如何判断

decision tree 代数判定树 最简单的是 比较判定树

一般的测度所说的是指针对worst-case
worst-case optimal 在这里插入图片描述
对于CBA 基于比较的算法 最优的复杂度 是nlogn
因为叶子节点一共有n!种,取log后,变为n的n次方(log下与n!同阶)取log

但是桶排序不是基于比较的算法,可以用优于CBA 可以达到n的复杂度

reduction 规约 lower-bound

例子排序算法可以规约于排序问题
A问题规约于B问题(与中文传统的表述方式不同)
在这里插入图片描述

元素唯一性问题(E.U.) <= 最近邻 问题 (cloest pair)。 最好超不过 nlogn
元素唯一性问题,最优算法nlogn
利用距离来算元素是否唯一。

nlogn sorting <= R.B.M. red&blue matching 而且连线不可以相交
注意R.B.M必定是存在的(可由计算几何证明)
如何对应呢?

set disjointness nlogn <= Diameter(点集中最长的两点)
set disjointness 二路归并。用nlogn 确定是否有相同的元素。相同的点会变为diameter。只要判断这个点是否重合。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值