社区
数据结构与算法
帖子详情
求最大和最小元素
ernestm
2006-04-06 10:19:33
用非递归写算法,对n个元素求最大最小值,要求该算法再最坏情况下时间复杂度<=3n/2,辅助空间O(1),谢谢!
...全文
471
15
打赏
收藏
求最大和最小元素
用非递归写算法,对n个元素求最大最小值,要求该算法再最坏情况下时间复杂度<=3n/2,辅助空间O(1),谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ernestm
2006-04-11
打赏
举报
回复
ok!谢谢
寻开心
2006-04-10
打赏
举报
回复
何谓分治, 把一个大问题,归结成为相同的子问题,分别解决
如果数据是偶数,先比较前两个,然后初始化nMax和nMin, index=2
如果数据是奇数,把nMax和nMin都初始化成第一个数据就是了, index=1
for (; index<maxlen; index+=2 )
{
a = array[index];
b = array[index+1]
if ( a>b ) ...
else ....
}
你可以把这个解法也当作是分治,算法重要的是思想,而不是形式
上面的方法当中,把大问题拆解成为22一堆的小问题,也可以说是分治
分治不等于一定是折半查找似的递归方式, 方式可以多种多样的
ernestm
2006-04-08
打赏
举报
回复
分治法也可以不用递归的方法的呀,那样是不是可以不超过O(1),我也只是想知道这个
treeroot
2006-04-07
打赏
举报
回复
时间复杂度 3n/2的常数没有意思也就是 o(n) 及时比较2n次也不会影响复杂度
LoveCreatesBeauty
2006-04-07
打赏
举报
回复
楼上的朋友说的不错,学习楼上的知识。
寻开心
2006-04-07
打赏
举报
回复
把n个数字,遍历一遍
每次拿出两个,比较大小 这样的比较用了 n/2 次
然后把大的数,用来相互比较出最大值
把小的数,用来相互比较出最小值
这个比较就是n次
合计就是3n/2次
O(1)是指用固定的空间实现,不是说只用1个空间
在上述算法当中,只需要临时变量保存当前的最大和最小数值而已
treeroot
2006-04-07
打赏
举报
回复
应该不难吧,遍历一下不就可以了
jp1984
2006-04-07
打赏
举报
回复
查以前的帖子..讨论过n次了
phoenixinter
2006-04-07
打赏
举报
回复
happy_888说的完全正确
jp1984
2006-04-07
打赏
举报
回复
分治怎么可能不超过O(1).递归要考虑栈空间.
ernestm
2006-04-07
打赏
举报
回复
分治法的思想我也知道,你说的这些我也知道,也可以把递归的改成非递归的,但就是辅助空间我还没有想好怎么不超过(O(1))。
不知道你有什么好的方法,很高兴和你讨论问题。谢谢
寻开心
2006-04-07
打赏
举报
回复
分治法也是一样的
把数分成两队,各自找出最大最小的, 然后大和大比大,得到最大;小和小比小,找到最小
对于分开的每个对,用同样的方法
这个是一个递归的过程,(可以写成非递归的形式),然后计算各个部分的计算量,结果是一样的
ernestm
2006-04-07
打赏
举报
回复
你这种是对的,这样比较次数刚好是3n/2
再请问一下你能不能用分治法呢,同时也要满足上面的要求
谢谢了
寻开心
2006-04-07
打赏
举报
回复
唉
假定当前的最大数值是nMax,最小数值是nMin, 这两个是临时变量
以后每从数组当中拿出两个数,a和b
如果 a>b 这种比较是 n/2 次
如果 a>nMax 那么 nMax = a; 这里直接和临时的最大最小数值比较,不需要其他空间保存
如果 b<nMin 那么 nMin = b;
else
如果 b>nMax 那么 nMax = b;
如果 a<nMin 那么 nMin = a;
ernestm
2006-04-07
打赏
举报
回复
把n个数字,遍历一遍
每次拿出两个,比较大小 这样的比较用了 n/2 次 //这样不就有n/2个最大值保存吗?
然后把大的数,用来相互比较出最大值 //你说怎么保存这些最大值和最小值哪?
把小的数,用来相互比较出最小值
这个比较就是n次
合计就是3n/2次
O(1)是指用固定的空间实现,不是说只用1个空间 //这个我知道,但直接按你上面的方法要临时变量就不是O(1)了吧?
在上述算法当中,只需要临时变量保存当前的最大和最小数值而已
递归
求
数组
最大
最小
元素
(分治法)
递归
求
数组
最大
最小
元素
。
分治算法
求
最大
值与
最小
值,找
最小
元素
1. 设计程序利用分治策略
求
n个数的
最大
值和
最小
值。 2. 利用分治策略,在n个不同
元素
中找出第k个
最小
元素
。
Shiro权限框架深入浅出视频教程(三套整合方案)
Shiro权限配置框架视频教程,该课程分为四大章节,分别是Shiro核心功能、Shiro的Web集成、Spring与Shiro整合、Spring Boot与Shiro整合。Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从
最小
的移动应用程序到
最大
的网络和企业应用程序。适合于有一定的Java EE开发经验的学员。
利用分治算法
求
数组的
最大
元素
和
最小
元素
【问题描述】利用分治算法
求
一个n运算数组的
最大
元素
和
最小
元素
【输入形式】输入两行,第一行为一个整数n,第二行为数组的n个
元素
; 【输出形式】输出两个数,一个是数组
最大
元素
的值,一个是数组
最小
元素
的值,中间用空格隔开 【样例输入】 8 8 3 2 9 7 1 5 4 【样例输出】 9 1 【样例说明】 数组中有8个
元素
,
最大
值为9,
最小
值为1
【算法分析与设计】
求
最大
、
最小
元素
的平均比较次数
上机实验–
求
最大
、
最小
元素
的的平均比较次数 编写一个程序,随机产生20以内的10个整数,设计一个高效算法寻找其中
最大
最小
元素
,统计
元素
间比较次数。并调用该算法执行10次并
求
元素
的平均比较次数。 #include<stdio.h> #include<stdlib.h> #include<time.h> #define MAXN 10 void randa(int ...
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章