问题由来是一位非计算机专业的同学初学算法课,在一些虚拟情景下解题非常地头疼而出现的。
很有意思的是,从回答他的问题中,我也重新思考了一些问题。

Try to create a useful algorithm that takes
O(n^2) for the worst case
Omega(1) for the best case
Theta(log(n)) for the average

当写到这题的时候,我没多想就写了一连串if else,然后往里面填充算法。
可当我试图引导我同学做这道题时,出现了以下对话

”你怎么会用sorting(分类)的算法呢?“
”为什么不能用sorting啊?“
”因为sorting最快average也要O(Nlog(N))啊。“
”为什么啊?“

于是我给他看了sorting算法的表格。虽然解决了问题,但还是不能解决”为什么“啊。说实话,一开始,我也只是把这算法当做规律给记下来了。为什么sorting就不能更好了呢?是否有更好的方法来证明这个呢?

由于数学公式在segmentfault上还是很难编辑,我这里给一个链接好了。

但是似乎还是太复杂了一点,还是死记硬背的把O(Nlog(N))记下来了。

我在想,是否能够这么思考问题。假设,我们只需要找到数的相同数在一个排序好的N元素的array中,假设我们并不知道这个数是否为哪个特定index上,但必然在array中,那很简单,最快的average是O(log(N))。其次,我们要找到第二个这样的数,仍然是O(log(N))。不断循环这个问题,那最后就出现了O(Nlog(N))的排列,然后,我们将这个组合打乱。实际上是个依次逐步的反向过程。虽然打乱组合显然没有必要去一个一个找数。但这个反向过程确是正向过程的最佳方式。(我觉得这两个过程应该可以用数学证明,可惜现在还没有这个能力。)

------------------------------------------------------------分割线-------------------------------------------------------------
另一个问题,多大的概率情况下,我们需要开始考虑概率是否会影响算法。
这也是来自同学对话,但我却非常在意。为什么我们总没有一个确定性的定义划分,认为多大的概率可能会影响算法,或者说,直接将概率引进入算法中。例如,在排列好的一组从0到n取出的N个数中,用binary search找到特定数,然后greedy search找重复数。那如果出现n个数都是重复数,这个算法就变成了O(N)。但是出现这个的概率为1/n^N。所以才可以近乎不记。是否应该定义但概率的倒数小于big O的数量级时,认为该算法会受到影响。
------------------------------------------------------------分割线-------------------------------------------------------------
这篇随笔实在是非常粗浅,本来想把最近自己看的AKS算法和一些并行运算算法的知识介绍一下。但仍然没能找到一种很好的方式来叙述。最近有可能要参加ACM,所以暂时就这样吧。

一篇小的随笔,关于记忆算法和概念相关推荐

  1. 小目标检测的增强算法

    小目标检测的增强算法 Augmentation for small object detection 摘要 近年来,目标检测取得了令人瞩目的进展.尽管有了这些改进,但在检测小目标和大目标之间的性能仍有 ...

  2. 机器学习 集成学习篇——python实现Bagging和AdaBOOST算法

    机器学习 集成学习篇--python实现Bagging和AdaBOOST算法 摘要 Bagging算法 Adaboost算法 摘要 本文通过python实现了集成学习中的Bagging和AdaBOOS ...

  3. 一篇小黄文牵出国内最大黑产

    "如今这年头,没被运营商"上"过(劫持)都不好意思说自己是中国网民!" 这还是乌云在2016年2月一句吐槽的话.三年时间过去了,乌云已不在,而中国网民依旧每日被 ...

  4. 运维小菜鸟随笔Linux入门级操作命令(更新中。。。)

    运维小菜鸟随笔&Linux入门级操作命令 从事实施运维行业已三年有余,却从未系统的学习过Linux,一直停留在有问题找百度的境界.近日终于痛下决心,系统的梳理一下Linux相关知识,顺便看看, ...

  5. 浅析拯救小矮人的 nlogn 算法及其证明

    浅析拯救小矮人的 nlogn 算法及其证明 题型简介: 有 $ n $ 个人,第 $ i $ 个人身高 $ a_i $ 手长 $ b_i $ ,他们为了从一个高为 $ H $ 的洞中出去,决定搭人梯. ...

  6. 小马儿随笔(三)——小标签 大学问

    目前在综合布线工程的甲乙双方和工程监理所关心的主要是工程的质量,如线缆敷设是否符合标准.能否通过测试验收.工程造价是否超预算等等,但是对与用户关系最密切的网络文档和标签标识往往被忽略.经常发生的情况就 ...

  7. QQ抢车位外挂(起始篇)--小研究成果展示

    经过几天的研究,把QQ抢车位的小外挂攻克下来了,哼哼,以后玩这个游戏再也不用进去,1辆车1辆车的换了. 研究证明,QQ对于安全方面做的还是比较好的,不像开心网(http://www.kaixin001 ...

  8. 郦旭东小可爱的大数据算法课程期末复习

    郦旭东小可爱的大数据算法课程期末复习 kmeans问题 kmeans原始问题和kmeans alg算法问题 kmeans问题 kmeans原始问题和kmeans alg算法问题 kmeans 原始问题 ...

  9. 【OpenCV 例程300篇】208. Photoshop 对比度自动调整算法

    OpenCV 例程200篇 总目录 [youcans 的 OpenCV 例程300篇]208. Photoshop 对比度自动调整算法 对比度是指图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量 ...

最新文章

  1. [Python] 拉格朗日插值
  2. [转]ASP.NET刷新页面的六种方法
  3. php云人才伪静态,骑士cms(骑士人才系统)伪静态设置方法
  4. MCS-51单片机总体概述(二)
  5. 微型计算机经历了那几个阶段,微型计算机的发展经历了哪几个阶段,各阶段微处理器的主要特征是什么...
  6. 智慧校园视频监控管理系统平台建设的详情分析
  7. php操作memcache
  8. 层叠上下文、层叠层级、层叠顺序
  9. Serialization assertion safeVersionRead == safeSerializationVersion failed.
  10. 游戏开发资源列表 (转)
  11. Qt之QGraphicsView入门篇
  12. visual studio工程文件介绍
  13. 【CSDN竞赛第四期】编程赛后总结与分享
  14. gRPC-proto文件写法
  15. DCA1000 Training Video(DCA1000培训视频)
  16. ArcGIS API for JavaScript 图层顺序
  17. Linux Device tree(二) - DT分析
  18. VSTO Ribbons的完整介绍
  19. Slack设计团队告诉你市值28亿美元的秘密武器是什么
  20. ☀️手把手教你Python+matplotlib模拟锁相放大器的原理以及工作过程☀️《❤️记得收藏❤️》

热门文章

  1. 不同类型的开放获取大揭秘
  2. 激光SLAM--标准数据集
  3. 北斗导航 | GNSS技术在自动驾驶中的作用
  4. 树莓派实现AD转换(pcf8591模块)
  5. java struts 框架_java struts 框架编程
  6. 窗口刷新 Invalidate UpdateWindow RedrawWindow
  7. tomcat访问oracle卡死,tomcat无法连接到oracle
  8. python 可变参数 关键字参数_Python之 可变参数和关键字参数
  9. JVM实战与原理---字节码执行引擎
  10. 第四范式陈雨强获评首届世界人工智能大会云帆奖 | 2020WAIC