假设法求最大值和数组的优点
给定一个数组,求数组中的最大值。
用假设法可解,思路是,把数组中随便一个元素设置为最大值,然后让其它元素和它比,如果比当前最大值大,那么最大值就被设置为这个元素,这个过程有点类似打擂台,共有N个人打擂台,其中一个人说,我是最厉害的,然后后面一个人把他打败了,它就编程最大的了,前面就被淘汰了,擂台上始终是当前最厉害的,那么最后留在擂台上的就是最厉害的。
想出假设法的人真的很聪明啊,我怎么想不到呢?
假设是4个整型变量,那么有以下代码
int a,b,c,d
int max=a;
if(b>=max)
max=b;
if(c>=max)
max=c;
if(d>=max)
max=d;
发现没有,这三段if代码很相似,但似乎不会有简便的办法了。
如果把这四个变量放到数组中,那么我们可能会写出这样的代码:
int main(void)
{int num[] = { 35,34,67,67};int max = num[3];if (num[0] >= max){max = num[0];}if (num[1] >= max){max = num[1];}if (num[2] >= max){max = num[2];}if (num[3] >= max){max = num[3];}printf("max=%d",max);return 1;
}
可以发现几段if代码就是数组索引不一样,其它地方都一样,如下图:
数组索引是一个常数,我们可以用一个变量i来代替它,然后让i的值从0开始,每次加1这样变化,for循环正是有这样的功能。
于是代码可以被优化成下面这样。
int main(void)
{int num[] = { 35,34,67,67};int max = num[3];for (int i = 0; i <= 3; i++){if (num[i] >= max){max = num[i];}}printf("max=%d",max);return 1;
}
数组从某些角度讲有优化代码的功能。
转载于:https://www.cnblogs.com/yfish/p/9807235.html
假设法求最大值和数组的优点相关推荐
- web前端html怎么求最大值和最小值,求js数组的最大值和最小值的四种方法
给定数组[54,65,43,21,12,34,45,58,97,24],求其最大值和最小值? 定义数组 var ary = [54,65,43,21,12,34,45,58,97,24]; 1.字符串 ...
- 数组子数组求最大值1
输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 实验思路: 从第一个元素开始循环,在嵌套另一个循环,从每个元素开始 ...
- 软件工程——求二维数组所有子矩阵的和的最大值
题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为 ...
- Console-算法[]-数组求最大值和最小值(只能遍历一次)
ylbtech-Arithmetic:Console-算法[]-数组求最大值和最小值(只能遍历一次) 1.A,Demo(案例) Console-算法[]-数组求最大值和最小值(只能遍历一次) 1.B, ...
- python求数组最大值_Python算法与数据结构--求所有子数组的和的最大值
Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. ...
- 输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)
输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).(奇安信-wab前端) 例如,输入的数组为{ 1.-2.3.10. ...
- 数组求和,求平均数,求最大值和最小值
1.定义数组 var arr=[]; var arr=new Array(); 2.数组赋值 var arr=[]; arr[0]=10;//把数字10赋值到数组索引为0的位置上 arr[1]=20; ...
- 数组中求最大值的方法
(1)for 循环:数组中循环求最大值 var arr=[1,5,9,0,1,-3,-98,100,80]; function fn(){var max=arr[0];for(var i=0;i< ...
- 定义一个二维数组,写函数来实现对该二维数组求最大值。(要求,用行指针为函数形参)
// 121219 上机任务3.cpp : 定义控制台应用程序的入口点. // /* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * ...
- (1~2):C实现数组求和,求平均值,求最大值,最小值
1.求和.求平均值 #include<stdio.h>int main() {int arr[5]={1,2,3,4,5};int sum=0;for(int i=0;i<5;i++ ...
最新文章
- CSS sprites
- 使用Axis开发Web Service程序
- linux cenots 查看cpu核数
- makefile多目录多文件
- 两数之和-给定一个整数数组nums和一个目标值target,请你在该数组找出和为目标值的那两个整数,并返回他们的数组下标,你可以假设每种输入只会对应一个答案。但是,数组同一个元素不能使-python
- 52 - 算法 - LeetCode 20 数据结构类 stack
- slf4j使用(二)
- 安装navicat之后双击就会闪退_win2012,2016 能安装oracle 10g吗?
- layui 监听表单提交form.on(‘submit(sub)‘,function (){}) ajax请求失败问题
- Oracle 11g RAC 安装数据库软件找不到节点的解决
- Unity性能优化之Resources System
- 【python三维深度学习】python三维点云从基础到深度学习
- 斗牛(牛牛)概率计算器
- CSS3中的元素过渡属性transition
- Linux,Xshell
- Linux:error while loading shared libraries: /usr/lib/xx.so.xx: file too short
- iOS 字符串转ascii码,字符串转NSData
- Lost connection to MySQL server during query问题
- libpng16.so.16错误
- python自动化输入文本_python输入文本
热门文章
- pythonATM,购物车项目实战5-数据处理层
- poythoncode-实战2--常用方式for、while、dict、list
- 最常用计算机文件后缀名,windows系统文件后缀(扩展名)简单介绍,电脑知识普及...
- kali升级软件_KALI更新软件源地址
- python中capital是什么意思_Capital是什么意思?
- python、声明全局变量的关键字是_python基础之全局变量与global关键字
- 软件的接口设计图_软件工程中的分析、设计与实例
- DOM中cloneNode的使用之旅
- 云服务下的安全特点及基础防护
- servletconfigservletcontext