1. 算法M(求极大值)

给定\(n\)个元素\(X[1], X[2], ..., X[n]\), 我们将求\(m\)和\(j\)使得:
\(m=X[j]=max_{1 \le i \le n}X[i]\),其中\(j\)是满足这个关系的最大下标。

M1. [初始化] 置 \(j \gets n, k \gets n - 1, m \gets X[n]\)。(在算法期间,我们将有\(m = X[j] = max_{k < i \le n}X[i]\)。)
M2. [全部试过了?] 如果\(k = 0\),则算法终止。
M3. [比较] 如果\(X[k] \le m\),则转到 M5。
M4. [改变m] 置\(j \gets k, m \gets X[k]\)。(这个m的值是一个新的当前的极大值。)
M5. [减少k] k 减 1 并返回 M2

1.1 C实现

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <time.h>#define ARRAY_SIZE 16int32_t cycles;int maximum(int x[], int n)
{int j, k, m;j = n;k = n - 1;m = x[n];while (k) {cycles++;//printf("x[%d] = %d, j = %d, k = %d, m = %d\n", k, x[k], j, k, m);if (x[k] <= m) {k--;if (k == 0)break;} else {j = k;m = x[k];}}return m;
}int main(void)
{int array[ARRAY_SIZE];int i;int ret;srand((unsigned)time(NULL));for (i = 0; i < ARRAY_SIZE; i++) {array[i] = random() % 1000;}ret = maximum(array, ARRAY_SIZE - 1);printf("Array is: \n");for (i = 0; i < ARRAY_SIZE; i++) {if ((i > 0) && (i % 8) == 0)printf("\n");printf("%d\t", array[i]);}printf("\n\nThe maximum of array is %d, cycles is %d\n", ret, cycles);return 0;
}

1.2 运行结果:

# make
gcc -Wall -O3 -g m.c -o m
# ./m
Array is:
540     475     412     567     458     974     837     205
461     958     227     659     105     658     110     110The maximum of array is 974, cycles is 18

1.3 性能分析

当n很大时,算法M的执行次数近似于\(\ln n\)

转载于:https://www.cnblogs.com/jelly-wd/p/4169912.html

TAOCP-1.2.10_求极大值相关推荐

  1. matlab极大值点个数,求一组数的极大值个数

    已知一组数,如下所示,目标是求每行数的极大值个数,Matlab中有固有的函数求极大值个数吗?求各位大虾指点指点! 36 137 135 114 131 159 224 252 332 509 737 ...

  2. Python 求函数极小值、极大值点

    目录 Python 求函数极小值.极大值点 一.求极小值 1.不含参数的函数 2.含参数的函数 二.求极大值 Python 求函数极小值.极大值点 一.求极小值 1.不含参数的函数 例:求f(x)=s ...

  3. hdu5105给你一个方程,让你求极值(直接暴力)

    题意:       给你一个方程f[x] = abss(a * x * x * x + b * x * x + c * x + d); 然后给你各个参数还有x(-100<x<100)的取值 ...

  4. 如何用法向量求点到平面距离_支持向量机(SVM)

    最近完成的一个项目用到了SVM,之前也一直有听说支持向量机,知道它是机器学习中一种非常厉害的算法.利用将近一个星期的时间学习了一下支持向量机,把原理推了一遍,感觉支持向量机确实挺厉害的,尤其是核函数变 ...

  5. 用计算机求最大似然估计,用Excel软件实现最大似然估计数值计算的方法_刘文卿.pdf...

    用Excel软件实现最大似然估计数值计算的方法_刘文卿.pdf 2006 年 9 月 数理统计与管理 Sep , 2006 第 25 卷 第 5 期 Application of Statistics ...

  6. matlab零交叉块,[MATLAB基础] 关于心电信号奇异点与其小波变换模极大值对的零交叉点的关系?请教下面程序应该如何理解哈...

    关于心电信号奇异点与其小波变换模极大值对的零交叉点的关系?请教下面程序应该如何理解哈 %**************************************求正负极大值对*********** ...

  7. 逻辑回归损失函数推导及求导

    优点 实现简单: 分类时计算量非常小,速度很快,存储资源低: 缺点 容易欠拟合,一般准确度不太高 只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分 损失函数 逻辑 ...

  8. matlab中如何检测极大值和极小值?

    Matlab中sign函数: Matlab中已知自变量和因变量,怎么求极大值和极小值? 若diff(y)<0时,sign(diff(y))=-1,要想让y点为极大值,前面diff(y)要大于0, ...

  9. matlab求函数极值

    如果求极大值,可以把原函数加个负号.

最新文章

  1. 【转】根据起止日期+时间取数
  2. CEO 赠书 | 节省 50% 的人生,终止“瞎忙”式勤奋
  3. kibana7.x操作
  4. 如何利用CNKI句子检索功能提高研究效率
  5. Python--day46--MySQL视图
  6. 图像工程CH4 频域图像增强
  7. java中布尔值做比较_Java中的三态布尔值
  8. mysql select in 不存在返回0_MySQL索引优化看这篇文章就够了!
  9. win7系统文件夹属性在哪打开
  10. java文件服务器_JavaWeb项目架构之NFS文件服务器
  11. linux中断调用spi函数,基于Linux的ARM与FPGA SPI驱动,中断函数调用spidev_sync_read(),出现异常...
  12. mysql ssh通道_详解如何通过SSH通道来访问MySQL
  13. iOS开发经验总结(上)
  14. 大学计算机基础发送邮件,东南大学《大学计算机基础》实验16邮件合并.pdf
  15. 苹果妙控鼠标二代(Magic Mouse 2 )如何连接到 Window 10系统
  16. 分析电脑控制的丹佛机场行李系统
  17. Dialog_xml制作——博客地址
  18. 红米note3android驱动,为何我的红米NOTE3 装不了USB驱动
  19. 内网穿透的概念及解决方案
  20. java 第三方接口安全性_提供接口给第三方使用,需要加上校验保证接口的安全性(rsa加密解密)...

热门文章

  1. 【转】四阶魔方还原1
  2. Git upstream
  3. 关于React的一切(updating...)
  4. mongodb 默认端口号_你的爬虫数据储存在哪?MongoDB入门篇
  5. 请问用微信很少语音而且打字不喜欢打错别字的是什么样的人?能说明这样的人办事认真吗?
  6. 同学孩子上985大学,每月生活费5000元,大家认为合适吗?
  7. 毕业三年,攒了多少钱?
  8. 上有天最高,自然较为小
  9. 实体门店如何做促销?
  10. 为什么你总感觉情绪低落心情颓废?