社区
数据结构与算法
帖子详情
线性表的插入运算的平均时间为什么是 O(n) 而不是 O(n/2)?
quakecs
2006-05-09 11:49:32
下面是书上的内容
================
用数组实现表时,在表中做插入运算,平均要移动表中一半的元素,因而算法所需的平均时间仍为Ο(n)。
问题
====
既然是平均移动一半的元素,平均时间应该是 O(n/2) 啊?
...全文
1384
24
打赏
收藏
线性表的插入运算的平均时间为什么是 O(n) 而不是 O(n/2)?
下面是书上的内容 ================ 用数组实现表时,在表中做插入运算,平均要移动表中一半的元素,因而算法所需的平均时间仍为Ο(n)。 问题 ==== 既然是平均移动一半的元素,平均时间应该是 O(n/2) 啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
线性表
——顺序表——
时间
复杂度计算2
本文深入分析了在顺序存储结构的
线性表
中
插入
和删除元素时的
时间
复杂度,指出
平均
移动元素次数与表长的关系,得出算法
时间
复杂度为O(n)。通过示例1和示例2,比较了不同操作的
时间
复杂度,并强调了对元素排序对于提高
运算
效率的重要性。
数据结构之
线性表
插入
与删除
运算
本文介绍了
线性表
的基本概念,包括其定义、顺序存储结构的特点,以及在顺序表中
插入
和删除元素的操作方法,指出这些操作的
时间
复杂度均为O(n)。,
线性表
顺序存储结构——查找、
插入
、删除的
平均
比较/移动次数&
时间
复杂度计算
这篇博客探讨了
线性表
中查找、
插入
和删除操作的
平均
时间
复杂度。查找操作
平均
比较次数为(n+1)/2,
时间
复杂度为O(n);
插入
操作
平均
移动次数为n/2,
时间
复杂度同样为O(n);删除操作
平均
移动次数为(n-1)/2,
时间
复杂度为O(n)。这些分析对于理解数据结构的基本操作效率至关重要。
线性表
的
插入
以及操作
时间
复杂度
这篇博客探讨了在
线性表
中
插入
元素的效率。在最好的情况下,如果元素
插入
到表尾,
时间
复杂度为O(1)。然而,在最坏的情况下,当元素
插入
表头时,所有N个元素都需要移动,
时间
复杂度达到O(n)。
平均
来说,假设
插入
位置均匀分布,
平均
时间
复杂度接近O(n/2)。文章强调了正确处理
线性表
插入
操作对于优化算法性能的重要性。
线性表
顺序存储
插入
和删除新节点时
平均
移动次数
本文详细解析了在
线性表
中随机位置
插入
和删除元素时,所需
平均
移动元素个数的具体计算方法。通过数学公式得出,
插入
操作
平均
需要移动元素n/2个,而删除操作则需要移动(n-1)/2个。
数据结构与算法
33,026
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章