前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >C++算法分析与设计——求一个数组中的最大元素c++

C++算法分析与设计——求一个数组中的最大元素c++

作者头像
瑞新
发布于 2020-07-07 06:50:34
发布于 2020-07-07 06:50:34
1.2K00
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//设计分治算法求一个数组中的最大元素,并分析时间性能。
//简单的分治问题
//将数组均衡的分为“前” ,“后”两部分
//分别求出这两部分最大值,然后再比较这两个最大值
#include<iostream>
using namespace std;
extern const int n=6;// 声明
int main()
{
int a[n]={0,6,1,2,3,5};// 初始化 int mid=n/2;
int num_max1=0,num_max2=0; for(int i=0;i<=n/2;++i)// 前半部分
{
if(a[i]>num_max1)
num_max1=a[i];
} for(int j=n/2+1;j<n;++j)// 后半部分
{
if(a[j]>num_max2)
num_max2=a[j];
}
if(num_max1>=num_max2) cout<<" 数组中的最大元素: "<<num_max1<<endl;
else
cout<<" 数组中的最大元素: "<<num_max2<<endl;
return 0;
}
//时间复杂度: O(n)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/03/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
数据结构与算法 --- 排序算法(二)
上一篇数据结构与算法 --- 排序算法(一)中,学习了冒泡排序,插入排序,选择排序这三种时间复杂度为
Niuery Diary
2023/10/22
3040
数据结构与算法 --- 排序算法(二)
归并快排算法比较及求第K大元素
核心思想:将数组从中间分成前后两部分,然后对前后两部分分别进行排序,再将排序好的两个部分有序合并在一起,这样整个数组有序。全文图示来源于王争的《数据结构和算法之美》
evenleo
2020/04/01
9260
归并快排算法比较及求第K大元素
分治法
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/81417029
zy010101
2019/05/25
4150
Topk算法_topn算法
思路1:快速选择算法 可以采用快速选择算法,借助快排,设mid为每次划分中间结果,每次划分完之后如果mid==k,则说明序列刚刚好,第k位置和他前面的位置都是前K大的数,如果mid < k,则说明第K大的元素在后半部分,则前半部分肯定是前K大的数,只需从后半部分找k – mid大的数即可,否则如果mid > k,则说明第K大的数在前半部分,只需从前半部分找前K大的数字即可。 时间复杂度:假设每次划分的mid都在中间,每层都只是对一半做划分,所以每次划分的数据量为 n,n/2,n/4,n/8…一共有logn层,根据等比数列可以算出来时间复杂度为O(n) C++代码演示
全栈程序员站长
2022/09/21
3890
基础算法 | 最终章-8 归并排序
我们已经在本系列文章中已经学习了7种算法,其中一种是查找算法,六种是排序算法。本篇文章是基础算法系列的最后一章,我们将学习最后一个排序算法——归并排序。让我们话不多说,开始学习吧~
ACM算法日常
2018/12/06
4270
归并排序
基本原理: 归并排序利用分治法的思想,具体算法框架如下: step1: 将待排序列 A 分为两个子序列,再将子序列一分为二,一直分到每个子序列只含有一个元素为止,这个时候,每个子序列(都只包含一个元素)已经是有序的。 step2: 根据分解的路径,对每一对子序列进行排序 step3: 将已经排序的两个子序列合并,最后合成整个序列。 图解:
大忽悠爱学习
2022/05/05
1890
归并排序
剑指Offer - 面试题51. 数组中的逆序对(归并排序,求逆序对)
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
Michael阿明
2020/07/13
5770
分治算法
// 二分查找的思路,halfLen 是中位数的right 所以必须 m + n + 1 // 中位数是可以将数组分割为左右相等的数组,一个数将其分为左右相等个数有很多 // 同时要满足坐最大值小于右最小值
Tim在路上
2020/08/04
7440
【趣学算法】Day4 分治算法——二分搜索
14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!
周小末天天开心
2022/11/12
2390
【趣学算法】Day4 分治算法——二分搜索
牛客网-旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
手撕代码八百里
2020/07/28
3010
数组前半部分和后半部分有序的全排序
例如: 已知数组a前半部分a[0,mid - 1],后半部分a[mid,num-1],现前半部分和后半部分均已排好序。要求:实现a数组的从小到大排序。空间复杂度为O(1). 1 #include <iostream> 2 using namespace std; 3 4 void PrintArry(int v[],int len) 5 { 6 for(int i = 0; i < len; i ++) 7 cout<<v[i]<<" "; 8 cout<<
猿人谷
2018/01/17
6290
查找数组中第K大的元素
要查找一个数组中的第 K 大元素,有多种方法可以实现,其中常用的方法是使用分治算法或快速选择算法,这两种方法的时间复杂度到时候O(n)。
孟斯特
2023/10/31
2470
查找数组中第K大的元素
算法分析与设计论文
递归算法是一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法。它通常把一个大型复杂的问题转化为一个与原问题类似的规模较小的问题来求解。
全栈程序员站长
2022/09/20
5930
算法分析与设计论文
折半枚举(双向搜索)
折半枚举的思想来源于双向搜索,主要解决的就是当问题规模较大时,无法枚举所有元素的组合,但能枚举一半元素的组合.
灯珑LoGin
2022/10/31
2710
Edu Codeforces 102 D. Program(思维+前缀和)
有一个变量x初始值为0,有一组只包含“-”和“+”操作序列,“-”代表x的值-1,“+”代表x的值+1。有q次询问,每次询问给出两个整数l和r,表示忽略操作序列中下标为l到r的所有操作,要你计算出忽略这些操作后按顺序执行剩下的所有操作的过程中x可能的值的个数。
Here_SDUT
2022/06/29
2430
NOIP训练营集训笔记—信息学基础算法(倍增与分治算法)
本文摘自清北OI学堂内部笔记,作者潘恺璠,来自柳铁一中曾参加过清北训练营提高组精英班,主要记录的是信息学基础算法。笔记非常详细,特分享给大家! NOIP2019年夏令营正在报名中,6大校区10种班型,可前往微信noipnoi报名!
用户5325900
2019/06/06
6940
NOIP训练营集训笔记—信息学基础算法(倍增与分治算法)
面试官爱问的10大经典排序算法,20+张图来搞定
冒泡排序是因为越小的元素会经由交换以升序或降序的方式慢慢浮到数列的顶端,就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名冒泡排序。
C语言与CPP编程
2021/05/18
5270
面试官爱问的10大经典排序算法,20+张图来搞定
C++算法分析与设计——数组 A[n]中所有元素循环左移 k 个位置
//6. 设计分治算法,实现将数组 A[n]中所有元素循环左移 k 个位置 , 要求时间复杂性为 O(n),空间复杂性为 O(1)。例如,对 abcdefgh循环左移 3 位得到 defghabc。 // 采用分治法 // 将数组分为 0-k-1 和 k-n-1 两块 // 将这两块分别左移 // 然后再合并左移 #include <iostream> using namespace std; void LeftReverse(char *a, int begin, int end) { for(int i
瑞新
2020/07/07
1.7K0
快速搞定8大排序算法
我遇到过那些人那些事,还有,我希望遇见你 点击上方蓝字“在北方玩弹子球”一起玩耍 插入排序 基本思想:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。 算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。 代码: public static void insertionSort(int[] array){ int tmp; for(int i=1;i<array
谭庆波
2018/08/10
3010
快速搞定8大排序算法
最小生成树----克鲁斯卡尔算法
克鲁斯卡尔算法基本思想 普利姆算法和克鲁斯卡尔算法比较: 伪代码 数据结构设计 连通分量 图解 注意:将边数组按照权值大小排好序是算法的前提 最小生成树算法 完整代码 #inclu
大忽悠爱学习
2021/03/23
7020
相关推荐
数据结构与算法 --- 排序算法(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档