线性表的插入运算的平均时间为什么是 O(n) 而不是 O(n/2)?

quakecs 2006-05-09 11:49:32
下面是书上的内容
================
用数组实现表时,在表中做插入运算,平均要移动表中一半的元素,因而算法所需的平均时间仍为Ο(n)。

问题
====
既然是平均移动一半的元素,平均时间应该是 O(n/2) 啊?
...全文
1291 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
pkurao 2006-06-30
  • 打赏
  • 举报
回复
好好看看什么是大O吧
一般国外的数据结构书比较强调数学知识跟数据结构、算法的结合。
knuth《具体数学》
《离散数学及其应用》
《The Art of Computer Programming》
《Introduction to Algorithms》
《算法引论:一种创造性方法》
这几本书都还可以,你只要挑想看的部分先看下,否则太多了
see00966 2006-06-27
  • 打赏
  • 举报
回复
chenhu_doc 2006-06-27
  • 打赏
  • 举报
回复
Ο(n)是度量算法复杂度的,不是度量程序运行时间的。O(n)表示程序的运行时正比于n,正比于n/2当然正比于n了。这是一个定性的分析而非定量的分析,如果做定量的分析,那个还要考虑每次查找的时间。那么一个程序在特定的语言,特定的CPU和内存,特定的编程风格下,运行的时间为:n/2*K +c, K为每个插入的运行时间。C为附加的时间,包括在进入循环体之外变量初始化,资源申请,资源释放,函数调用等操作所用的时间。这个公式对度量算法复杂度来说,是不是显得画蛇添足了。
matrass_zhao 2006-06-23
  • 打赏
  • 举报
回复
这个帖子怎么还没沉下去?搂主在这儿丢死人了。
jk012cgf 2006-06-22
  • 打赏
  • 举报
回复
平均时间应该是 n/2没错啊,可你的书上确实是:“因而算法所需的平均时间仍为Ο(n)”是这样?如果真是这样,那么书上的说法错误,因为“Ο(n)”是什么,是时间复杂度,可不是平均时间,平均时间绝对是n/2。看插入运算:长度为n的线性表,在第i个位置插入:i=1,2,3……n+1,好了,而插入位置的概率为1/(n+1)插到最后当然不用移动,第1个元素前移动n个元素n次,第2个元素前移动n-1个元素n-1次,来看移动的平均次数(1/n+1)*(((1+n)*n)/2)=n/2.这不是完了。
极深研几 2006-06-13
  • 打赏
  • 举报
回复
cite:billmo1986(潘安+宋玉)
"建议找几本国外版本的数据结构看看,里面很详细的。"能不能推荐几本?
ljkong 2006-06-12
  • 打赏
  • 举报
回复
ft,一样一样一样的,看楼上这么多解释
billmo1986 2006-06-09
  • 打赏
  • 举报
回复
是呀,二者相等的
严蔚敏的数据结构书对这个讲的很不清楚
建议找几本国外版本的数据结构看看,里面很详细的。
jp1984 2006-06-09
  • 打赏
  • 举报
回复
n ~ n/2 (n->inf)
so O(n) = O(n/2)
atiansk2006 2006-06-09
  • 打赏
  • 举报
回复
认同楼上所说的.
imdg 2006-06-03
  • 打赏
  • 举报
回复
O(n) == O(n/2)
chmsky 2006-06-02
  • 打赏
  • 举报
回复
O(n/2)是移动的期望值
O(n/2)就是O(n)
Zephyrzzz 2006-05-30
  • 打赏
  • 举报
回复
从另一个角度想,其实查找插入位置也需要时间,你可以理解为加入查找时间的复杂度吧,虽然不加也是这样:)
sclzmbie 2006-05-29
  • 打赏
  • 举报
回复
good
merlinran 2006-05-28
  • 打赏
  • 举报
回复
“O(n)表示程序的运行时正比于n,正比于n/2当然正比于n了。”

O(n)表示算法复杂度的上界。theta(n)才表示与n成比例。
casablancaliu 2006-05-27
  • 打赏
  • 举报
回复
恩 同意楼上的
beatles89 2006-05-25
  • 打赏
  • 举报
回复
dext(德克斯特) 说得很对;
时间复杂度指的是数量级上的度,所以n=n/2。
xl5338870 2006-05-23
  • 打赏
  • 举报
回复
建议LZ好好看看大O表示法,怎么会问这个问题?
treeroot 2006-05-22
  • 打赏
  • 举报
回复
一样
AKQJ10 2006-05-22
  • 打赏
  • 举报
回复
线性的ax+b都是O(n)
加载更多回复(4)

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧