主题:帮忙看看,一道判断题
zjkzxy
[专家分:310] 发布于 2006-12-28 09:21:00
)同一个算法,实现语言的级别越高,执行效率就越低
我认为是对的,但是答案却是不对,
不知为什么?请高手指点一、二
回复列表 (共7个回复)
沙发
雪光风剑 [专家分:27190] 发布于 2006-12-28 10:14:00
那么请你举出一个反例吧
同样的算法在同等数据存储开销的基础上时间代价应该是同等的
板凳
zjkzxy [专家分:310] 发布于 2006-12-28 10:40:00
采用分块查找方法,既能实现线性表所希望的较快的查找速度,又能适应动态变化的需要。
请问一下,上述叙述是正确的,为什么?
分块查找方法是一种静态查找,所在的查找表不会发生变化,如果适应动态变化的需要的话,静态查找表不是变化的吗?
3 楼
雪光风剑 [专家分:27190] 发布于 2006-12-28 10:56:00
头疼了半天
最后想到一个问题
你的焦点冲突在静态查找和动态变化上
动态变化的表和静态的查找过程是不相冲突的吧
查找之前的分块是动态过程
这么理解你觉得可以吗?
因为这块知识很久没动过了,有差不多8年了
所以可能理解上没那么好了。见谅
4 楼
wyjq395 [专家分:2710] 发布于 2006-12-28 22:12:00
同一个算法,实现语言的级别越高,执行效率就越低
总体上来说是对的,因为成为高级语言是有代价的。但是并不绝对,如果只是面向过程的东西C和C++应该效率是一样的吧。(当然我不知道C++是否会比C高级一点,只是评感觉)
采用分块查找方法,既能实现线性表所希望的较快的查找速度,又能适应动态变化的需要。
分块查找好像是有条件的,要求块内是有序的。所以能实现线性表所希望的较快的查找速度到是不假,可是能适应动态变化的需要。就不可以了吧?因为还要对块排序啊?
5 楼
雪光风剑 [专家分:27190] 发布于 2006-12-29 04:14:00
[quote]同一个算法,实现语言的级别越高,执行效率就越低
总体上来说是对的,因为成为高级语言是有代价的。但是并不绝对,如果只是面向过程的东西C和C++应该效率是一样的吧。(当然我不知道C++是否会比C高级一点,只是评感觉)
采用分块查找方法,既能实现线性表所希望的较快的查找速度,又能适应动态变化的需要。
分块查找好像是有条件的,要求块内是有序的。所以能实现线性表所希望的较快的查找速度到是不假,可是能适应动态变化的需要。就不可以了吧?因为还要对块排序啊?[/quote]
你对第一个问题的理解有误
对于同样的问题同样空间代价的最优化代码在cpu里消耗的时间代价也应该相同
实现算法的时间代价和应用的语言级别无关。
注意程序设计语言一共只有3级……c/c++同属高级语言
第二题我已经做出了我的理解,对于动态表来说,如果满足使用分块查找的条件,只需要保证最后查找区段的相对静态就可以了。对于可以应用分块查找的表,必须默认满足分段有序,所以面对动态变化,只要划分的过程划出相对静态的最后查找段,整体就是适应动态变化的
6 楼
wyjq395 [专家分:2710] 发布于 2007-01-14 13:15:00
[quote]注意程序设计语言一共只有3级……c/c++同属高级语言[/quote]
呵呵,怎么还有这个说法啊。难道就是高级语言,汇编语言,机器语言的分法?
7 楼
argentmoon [专家分:13260] 发布于 2007-01-14 22:19:00
有不同分法,也有些分法有这么叫:一级语言、二级语言、三级语言、四级语言
代码优化是个很头痛的事情,高级语言错综复杂,要说这个“最优化”,实则困难之至,毕竟代码优化现在也一直是专家在研究的东西。
算法相同的情况下只好比拼最终的机器代码,如果你保证你写的汇编代码比编译器产生的要更优的话,那么结论是成立的。一般来说,直接用汇编还是比高级语言要快的。而C++比C的效率又有所下降。
我来回复