王道p18 第12题假设 A中的 n个元素保存在一个一维数组中,请设计一个尽可能高效的算法,找出A的主元素。若存在主元素,则输出该元素:否则输出-1
视频讲解在:👇
p18 第12题 c语言实现王道数据结构课后习题_哔哩哔哩_bilibili
从前向后扫描数组元素,标记出一个可能成为主元素的元素 Num。然后重新计数,确认 Num 是否是主元素。
我们可分为以下两步:
1.选取候选的主元素。依次扫描所给数组中的每个整数,将第一个遇到的整数 Num 保存到c中,记录 Num 的出现次数为 1:若遇到的下一个整数仍等于 Num,则计数加 ,否则计数减 1;当计数减到 0时,将遇到的下一个整数保存到c 中,计数重新记为 1,开始新一轮计数,即从当前位置开始重复上述过程,直到扫描完全部数组元素。
2.判断 c中元素是否是真正的主元素。再次扫描该数组,统计 c 中元素出现的次数,若大于n/2,则为主元素;否则,序列中不存在主元素。
让我们来看一下代码该如何实现
int majority(int a[], int n)
{int i = 0;int c = 0;//c用来保存候选主元素,count用来计数int count = 1;c = a[0];//设置a[0]为候选主元素for (i = 1; i < n; i++)//查找候选主元素{if (a[i] == c)//对a中的候选主元素计数count++;elseif (count > 0)//处理不是候选主元素的情况count--;else//更换候选主元素,重新计数{c = a[i];count = 1;}}if(count>0)//统计候选主元素的实际出现次数for (i = 0, count = 0; i < n; i++){if (a[i] == c)count++;}if (count > n / 2)//确认候选主元素return c;else//不存在主元素return -1;
}
完整测试代码
#include<stdio.h>
int a[8] = { 0,5,5,3,5,7,5,5};
int n = 8;
int majority(int a[], int n)
{int i = 0;int c = 0;//c用来保存候选主元素,count用来计数int count = 1;c = a[0];//设置a[0]为候选主元素for (i = 1; i < n; i++)//查找候选主元素{if (a[i] == c)//对a中的候选主元素计数count++;elseif (count > 0)//处理不是候选主元素的情况count--;else//更换候选主元素,重新计数{c = a[i];count = 1;}}if(count>0)//统计候选主元素的实际出现次数for (i = 0, count = 0; i < n; i++){if (a[i] == c)count++;}if (count > n / 2)//确认候选主元素return c;else//不存在主元素return -1;
}
int main()
{int ret = majority(a, n);if (ret != -1)printf("中位数为%d", ret);elseprintf("未找到");return 0;
}
用a[8]={0,5,5,3,5,1,5,7 }测试结果为
![]()
用a[8] = { 0,5,5,3,5,7,5,5}测试结果为
![]()
相关文章:
王道p18 第12题假设 A中的 n个元素保存在一个一维数组中,请设计一个尽可能高效的算法,找出A的主元素。若存在主元素,则输出该元素:否则输出-1
视频讲解在:👇 p18 第12题 c语言实现王道数据结构课后习题_哔哩哔哩_bilibili 从前向后扫描数组元素,标记出一个可能成为主元素的元素 Num。然后重新计数,确认 Num 是否是主元素。 我们可分为以下两步: 1.选取候选的主元素。依…...
OpenTiny Vue 3.11.0 发布:增加富文本、ColorPicker等4个新组件,迎来了贡献者大爆发!
非常高兴跟大家宣布,2023年10月24日,OpenTiny Vue 发布了 v3.11.0 🎉。 OpenTiny 每次大版本发布,都会给大家带来一些实用的新特性,8.14 我们发布了 v3.10.0 版本,增加了4个新组件,组件 Demo 支…...
vivado查看报告和消息5
1、可配置报告策略 “ Configurable Report Strategies ” ( 可配置报告策略 ) 支持在 Vivado 工程模式下运行综合与实现的每个步骤之后选择 要运行的报告命令。根据设计阶段、设计复杂性和用户首选项, 需自动生成一组不同的报告以供频繁查…...
基于javaweb+mysql的jsp+servlet学生成绩管理系统(管理员、教师、学生)
博主24h在线,想要源码文档部署视频直接私聊,9.9元拿走! 基于javawebmysql的jspservlet学生成绩管理系统(管理员、教师、学生)(javajspservletjavabeanmysqltomcat) 运行环境 Java≥8、MySQL≥5.7、Tomcat≥8 开发工具 eclipse/idea/myecl…...
基于卷积优化算法的无人机航迹规划-附代码
基于卷积优化算法的无人机航迹规划 文章目录 基于卷积优化算法的无人机航迹规划1.卷积优化搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用卷积优化算法来优化无人机航迹规划。 …...
科技云报道:不卷自研大模型,金山办公如何创新生成式AI?
科技云报道原创。 过去大半年里,很多人对大模型的前景寄予厚望。主流观点认为,每个行业、每款产品都可以通过大模型“重做一遍”。 “重做一遍”听起来想象空间很大,但实际上多数大模型产品需要漫长的训练周期和海量资源投入,落…...
3BHE022291R0101 PCD230A 专注于制造卓越人工智能
3BHE022291R0101 PCD230A 专注于制造卓越人工智能 BISTelligence是BISTel的一个分支,BISTel是为全球半导体和FPD制造商提供工程和软件自动化产品的领先供应商。半导体产品集团上个月被卖给了新思科技。在出售给Synopsys之后,Bisetlliegnce成立了两个部门…...
小程序 scroll-view 性能问题
先说使用场景,一次加载很多数据造成小程序卡顿的问题 ,找了好多都没有好的解决办法,要么太过复杂,然后研究了两天通过简单的办法实现,先根据数量把高度撑开,然后根据滚动位置渲染指定的数据就可以了&#x…...
【移远QuecPython】EC800M物联网开发板的硬件PWM和PWM输出BUG
【移远QuecPython】EC800M物联网开发板的硬件PWM和PWM输出BUG 文章目录 导入库初始化PWM开启PWMPWM硬件BUG硬件BUG复现原因附录:列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 导入库 from misc import PWM_V2或者 from misc import PWM但我觉得…...
OverDraw的优化
在uwa搜寻到的一些overDraw优化方法 透明图片避免绘制来减少overDraw 像一些alpha0的图片,根本没有必要参与绘制。所以留一些可以参与Raycast,但是不绘制 using UnityEngine; using System.Collections;namespace UnityEngine.UI {public class Empty…...
数据结构—字符串
文章目录 7.字符串(1).字符串及其ADT#1.基本概念#2.ADT (2).字符串的基本操作#1.求子串substr#2.插入字符串insert#3.其他操作 (3).字符串的模式匹配#1.简单匹配(Brute-Force方法)#2.KMP算法I.kmp_match()II.getNext() #3.还有更多 小结附录:我自己写的string 7.字符…...
inne所属公司抢注“童年时光”商标仍被冻结
根据中国商标网查询,国家知识产权局已于2023年3月10日裁定,被告inne所属的南京童年时光生物技术有限公司注册的“童年时光”商标无效。随着这起保健品行业品牌资产争夺事件的发酵,更多的细节得到披露,至此,一个从“代理…...
20231106-前端学习加载和视频球特效
加载效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>加载效果</title><!-- 最新…...
Arrays.asList() 和 List.of() 的列表之争
1. 概述 有时在Java中,为了方便,我们需要创建一个小列表或将数组转换为列表。Java 为此提供了一些辅助方法。 在本文中,我们将比较初始化小型临时数组的两种主要方法:List.of()和 Array.asList()。 2. Arrays.asList() Java 自…...
基于51单片机的停车场管理系统仿真电路设计
**单片机设计介绍,基于51单片机的停车场管理系统仿真电路设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 停车场管理系统仿真电路设计介绍 停车场管理系统主要用于自动化管理和控制停车场,以提高停车…...
APIView单一资源的查看更新删除
APIView单一资源的查看更新删除 一、构建路由 re_path("author/(/d)",AuthorDetailView.as_view)), 二、视图类 在views.py中添加AuthorDetailView类 class AuthorDetailView(APIView):def get(self, request, pk):author Author.objects.get(pkpk)serializer A…...
UML--类图的表示
1. 类的表示 1.1 访问属性 : public -: private #: protected 1.2 接口与抽象类 斜体 表示抽象类和抽象方法 <<Interface>> 类表示接口 1.3 类图示意 Mclass- val: int getVal(): int 2. 类关系 2.1 实现关系 空心三角形和虚线组成 B实现A,则三角形尖尖朝…...
JVM字节码文件浅谈
文章目录 版权声明java虚拟机的组成字节码文件打开字节码文件的姿势字节码文件的组成魔数(基本信息)主副版本号(基本信息)主版本号不兼容的错误解决方法基本信息常量池方法 字节码文件的常用工具javap -v命令jclasslib插件阿里art…...
DBever 连接trino时区问题 The datetime zone id ‘GMT+08:00‘ is not recognised
DBever连接trino 测试连接成功,但是执行sql报时区不对、如果你默认使用的是大于jdk8的版本 会存在这个问题,因为jdk版本 jdk8 和jdk17 版本默认时区是不同的 trino官网明确说明了时区默认跟jdk走 解决方案 可以先行查看JDK本地时区库版本,执…...
xlua源码分析(二)lua Call C#的无wrap实现
xlua源码分析(二)lua Call C#的无wrap实现 上一节我们主要分析了xlua中C# Call lua的实现思路,本节我们将根据Examples 03_UIEvent,分析lua Call C#的底层实现。例子场景里有一个简单的UI面板,面板中包含一个input fie…...
数智驱动 人才筑基——拔尖创新人才与卓越工程师培养论坛举行
3月22日,第二届高等院校新工科人才培养暨产教融合发展大会在北京举行。大会以“科技创新 智造未来”为主题,来自全国各地的本科院校、职业院校、行业企业以及媒体等1000余位嘉宾参会。22日下午,数智驱动 人才筑基——拔尖创新人才与卓越工程师…...
Flux.1-Dev深海幻境作品集:LSTM时序灵感驱动的系列艺术创作
Flux.1-Dev深海幻境作品集:LSTM时序灵感驱动的系列艺术创作 最近在尝试一些AI艺术创作的新玩法,发现了一个特别有意思的组合:用LSTM模型来“读”故事,再用Flux.1-Dev模型来“画”故事。听起来有点抽象?简单说…...
实测有效方案:星图平台一键部署Qwen3-VL:30B,接入飞书提升办公效率
实测有效方案:星图平台一键部署Qwen3-VL:30B,接入飞书提升办公效率 1. 为什么选择Qwen3-VL:30B作为办公助手 1.1 办公场景中的图文处理痛点 在日常办公中,我们经常遇到需要同时处理图片和文字的场景。比如会议结束后,群里堆满了…...
美胸-年美-造相Z-Turbo真实案例:快速生成24套手游服装方案
美胸-年美-造相Z-Turbo真实案例:快速生成24套手游服装方案 1. 项目背景与挑战 在手游《幻境物语》的角色设计阶段,美术团队面临一个紧迫需求:为游戏中的"花语使者"职业设计24套不同风格的服装方案。传统手工绘制方案需要至少3周时…...
魔兽世界插件开发利器:wow_api技术架构与实战指南
魔兽世界插件开发利器:wow_api技术架构与实战指南 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api 技术探索:从需求到架构的演进之路 魔兽世界插件开发生态长…...
Umi-OCR插件技术方案:5款引擎深度对比与实战配置指南
Umi-OCR插件技术方案:5款引擎深度对比与实战配置指南 【免费下载链接】Umi-OCR_plugins Umi-OCR 插件库 项目地址: https://gitcode.com/gh_mirrors/um/Umi-OCR_plugins Umi-OCR插件库为开源OCR工具提供了丰富的引擎选择,从本地CPU加速到云端AI识…...
深度解析ConcurrentHashMap设计演进:从分段锁到无锁化的并发之路
在Java并发编程领域,ConcurrentHashMap绝对是“并发容器扛鼎之作”——它既解决了HashMap并发环境下的数据不一致(死循环、数据丢失)问题,又突破了Hashtable全表锁的性能瓶颈,成为高并发场景下K-V存储的首选。自JDK1.5…...
APK Editor Studio:从入门到精通的完整Android应用编辑指南
APK Editor Studio:从入门到精通的完整Android应用编辑指南 【免费下载链接】apk-editor-studio Powerful yet easy to use APK editor for PC and Mac. 项目地址: https://gitcode.com/gh_mirrors/ap/apk-editor-studio 在Android应用开发和逆向工程领域&am…...
清单来了:2026最新AI论文网站测评与推荐
2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...
基于FDM - EDFM的油气藏地层压力场计算:MATLAB实战
基于有限差分-嵌入式离散裂缝网络(FDM-EDFM)的油气藏地层压力场计算,通过matlab代码实现,可提供理论指导和相关问题,可计算不同裂缝网络的压力分布。在油气藏工程领域,准确计算地层压力场对于理解油藏动态、…...
