题目

在n个人中,被所有人认识却不认识所有人的人,被称作社会名流(或称名人)。若存在社会名流,则找出他。可以使用的唯一方法是询问:“请问你知道那个人吗?”

请给出提问次数为O(n)的算法,写出伪代码,分析算法的正确性,并给出算法运行时间的精确分析(O(n)中隐藏的系数)。

思路

用A指向B表示A认识B,那么社会名流如下图中的5号。

当问A是否认识B时, 若A认识B则A不是社会名流,若A不认识B则B不是社会名流。每次询问都能排除一个人,所以按顺序询问n-1次即可只剩一个候选人。

但要注意,仅剩的人并不一定就是社会名流!题目中没明确社会名流一定存在,所以最后需要加上确认环节:

  1. 他是否被所有人认识
  2. 他是否不认识所有人

两种反例如下:


伪代码如下:

k←1  //记录社会名流候选人编号
for i←2 to n doif k认识i then k = i  //排除了k,将k替换为i
for i←1 to n doif i!=k and (i不认识k or k认识i) thenreturn "无社会名流"
return k

为了排除n-1个人询问了n-1次,为了验证最后一个人是否是社会名流询问了2 * (n - 1)次,所以总询问次数 T(n) = 3(n - 1)。

社会名流问题算法详细复杂度分析相关推荐

  1. 03.预备知识:算法的复杂度分析

    大家好,我是王有志.关注王有志,回复DSA获取数据结构和算法学习资源. 今天我们只有一个内容:算法的复杂度分析.算法的复杂度分析可以说是算法中的灵魂,有了它我们才能去评价一个算法优劣. 算法的评价标准 ...

  2. 数据结构与算法分析c++第四版_数据结构与算法 - 时空复杂度分析

    这周主要总结了时间复杂度的学习,跟小伙伴们分享下,欢迎指正. 一.为何需要分析算法复杂度 挺多同学本科都学习过数据结构和算法这门课,但是有没有想过这门课到底是解决什么问题?科学家设计这些数据结构和算法 ...

  3. 【数据结构与算法】复杂度分析

    一.什么是复杂度分析? 1.数据结构和算法解决是"如何让计算机更快时间.更省空间的解决问题". 2.因此需从执行时间和占用空间两个维度来评估数据结构和算法的性能. 3.分别用时间复 ...

  4. 3.算法的复杂度分析

    算法 **算法(Algorithm)**是对某一个或者某一类问题的解决方案的描述,根据问题的输入,在有限的计算时间里输出预期的结果.不同的算法解决问题所需的时间和空间可能会不同,通常用时间复杂度和空间 ...

  5. 在线算法与竞争度分析

    离线算法是指算法运行时可以充分利用输入数据之间完整的关联特性,即算法运行前所有输入数据均是已知的. 在线算法是指算法必须在输入数据不是完全可知的情况下,完成相应的计算并输出计算结果.在线算法均是近似算 ...

  6. python素数最优算法_几种简单的求素数算法的复杂度分析

    素数的算法有很多种,现在主要讲两种算法及其改进版本的复杂度分析,解释性能提升的幅度.同时应用一个素数定理:素数的平方一定是合数,那么在范围内最大数的开方范围内找不到能整除的数,那么这个数是素数.应用这 ...

  7. 原地归并排序算法的复杂度分析

    几篇排位很高的和原地归并算法的博客比如: https://blog.csdn.net/acdreamers/article/details/24244643 都将原地归并算法的复杂度归为 O ( n ...

  8. 各个排序算法的复杂度分析与复杂度介绍

    什么是复杂度 算法的时间复杂度和空间复杂度 算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否. 空间复杂度:类似于时间复杂度的讨论,一个算法的空间复 ...

  9. 数据结构与算法_01_复杂度分析

    文章目录 记号 记号

最新文章

  1. 自动驾驶汽车想成为主流?先过了这十二关再说
  2. Git remote 修改源
  3. xxx cannot be resolved to a type 问题的几种常见原因
  4. svn merger的时候 报远程主机强迫_SVN与Git比较的优缺点差异
  5. win10安装tensorflow (cpu版)
  6. 安装了dns且可以正常工作为什么还有没有可以使用的DNS服务器的错误
  7. 我是如何用百度知道做小众企业站流量推广的?
  8. 如何把pdf分割成多个?怎么把pdf文件分成多个?
  9. c语言指针实现数组排序算法,C语言实现数组快速排序算法
  10. [課程筆記] 機器學習2021(李弘毅) L13. Transformer (下)
  11. openwrt查看flash、RAM、CPU信息【转】
  12. Xcode6 打包报错 ITMS-90096
  13. 啃下这些Framework技术笔记,专题解析
  14. 【英语:发音基础】A1.元音与辅音
  15. 生活-痘痘告诉你,身体哪里生病了
  16. Red Hat linux9 初装配置
  17. 这个php兼职靠谱吗?一月3000?
  18. Devtools下载添加到谷歌扩展程序
  19. Kubesphere流水线集成(Git、Maven、Docker、K8S)
  20. 基于ESP32的开源定时浇花系统

热门文章

  1. 取一个网络安全公司的名字
  2. 《全网最强》详解机器学习分类算法之决策树(附可视化和代码)
  3. pcb入门之PCB封装自制
  4. JZOJ7月24日提高组T3 终章-剑之魂
  5. 上帝为什么创造了九寨沟
  6. bootstrap框架之轮播(Carousel)
  7. 周立功先生和他创办的公司
  8. 【Davinci开发】:功能安全(vHSM与HOST联调)
  9. JavaScript 生成随机验证码
  10. 用爬虫批量采集同花顺圈子评论数据