如何实现对一组数分段求最大值?
mathcad吧
全部回复
仅看楼主
level 1
20031730 楼主
有一组数Pi,i=1,2,...n,想对这组分成很多小段,对每个小段求最大值,如何实现?
如每3个Pi为一组(也可能是4个或其它数),如Q1=max(P1,P2,P3),Q2=max(P4,P5,P6)……怎样求出每一个最大值Q来?
谢谢
2014年08月04日 03点08分 1
level 12
给一个很笨的法子,若有兴趣可以进一步优化:
2014年08月04日 04点08分 2
level 12
你说的i=1,2,...n,跟我这个一样,比我这个还简单些,改ORIGIN=1就成了。
我用习惯ORIGIN=0了,也不想改这个习惯。
2014年08月04日 04点08分 3
level 15
2014年08月04日 10点08分 4
level 15
我也来一个:
2014年08月06日 10点08分 5
level 15
对了,朱老大。
MC里面有没有判断整除的函数?
及有没有已知的内置函数来代替:
2014年08月06日 10点08分 6
MC里没有整除,我在https://tieba.baidu.com/p/3177522488说过。你这个整除的想法挺有意思的哈,用mod(rows(A),a)=0来表示整除也挺方便的。
2014年08月06日 14点08分
另外,咱们MC吧前一段时间的帖子里有一些简单算法的实现,你翻翻看,争取也给出MP的解来吧。 :)
2014年08月06日 14点08分
level 11
直接"冒泡"算法就可以了
2014年08月06日 13点08分 7
vv_0147,望你有时间把这道题的“直接冒泡算法”程序给贴过来,或者详细说说思路。咱们尽量的丰富一下MC吧的内容,好吧?
2014年08月06日 14点08分
冒泡算法是排序用的吧?对于一个n项数列,冒泡算法在最坏的情况下要进行(n-1)!次交换才能实现排序。而楼主问题的重点其实是“分块”。求最值反而不那么重要了。
2014年08月06日 23点08分
level 12
说起冒泡,好像现在流行的“快速排序法”就是先把数组先粗排序,然后按顺序分段,再对每一段进行排序。看演示是挺快的,因为实际上仅发生了两次排序,第二次排序是批处理的思路,但不知道那个粗排序是怎么实现的。
2014年08月07日 00点08分 8
level 15
吧主。粗排序就是一个大泡泡而已。
这也是冒泡算法。
因为你要把数组分段。 那么,我以你的一个数组段为一个元素进行冒泡法排序……
当分段长度为1时,就是原始的冒泡算法了。
粗排序的排序精度与分段长度成反比,粗排序的计算量与分段长度成正比(阶乘关系)。
2014年08月07日 01点08分 9
level 11
不好意思版主,最近劲椎一直不舒服,很少用电脑。一直用手机,等颈椎好了,一定写出来。楼上的那个方法我猜是用多线程。
2014年08月07日 23点08分 10
单线程的。就是用索引控制,实现分块“扫描”。然后,不管求最大、最小,还是平均值都好办了。跟吧主的调用“submatrix”差不多。
2014年08月09日 14点08分
level 11
假如排序的数据是整数,大家可以搜一下”漏桶”排序,这个速度是超快,(在单线程的情况下处理数据)
2014年08月07日 23点08分 11
level 12
呵呵,vv,好好疗养颈椎,兄弟们欢迎你回来发言 :)
2014年08月08日 01点08分 12
1