算法分析
文章平均质量分 90
哎孩
嘿嘿嘿~~~
展开
-
算法分析 —— 概述
作为一个已经2年经验的程序员,随着项目经验的逐渐积累,特别是技术栈深度和广度的逐渐扩展,现在越来越认识到算法基础 也是越来越重要,在某些时候更是会让你在技术栈深度扩展时过早的出现瓶颈(只知其一不知其二或者无法做到举一反三)。所以现在决定在算法领域开始自己的积累,也希望大家可以一起成长。 在算法的学习中,算法分析是基础的一部分,在设计算法的时候,效率是非常重要的因素之一...原创 2018-05-03 23:09:42 · 1757 阅读 · 0 评论 -
算法分析——算法的渐进效率分析 和 渐进符号大O、大Ω、大θ、小o、小ω
上章 算法概述 中讲述了 在设计算法和比较算法时,设计人员更倾向于假设输入规模n无限大,然后再比较算法的渐进效率。为什么要分析算法的渐进效率,而不是直接按照输入规模直接计算效率进行比较?很直观的原因就是,当输入规模小的时候,各种算法间的差距并不会太大,对于大部分应用程序来讲,这些差距都可以被忽略。现实原因是,要精确计算算法执行时所消耗的资源是非常繁琐,代价较大,甚至说不太切于实际的。所以就有人发明...原创 2018-05-07 15:12:59 · 24370 阅读 · 3 评论 -
算法分析——排序算法(归并排序)复杂度分析(主定理法)
前两篇文章中分别是要用递归树、代换法对归并排序的时间复杂度进行了简单的分析和证明,经过两次分析后,我们发现递归树法的特点是:可以很直观的反映出整个归并排序算法的各个过程,但因为要画出递归树所以比较麻烦,所以递归树算法更适合新手,因为它可以让分析者更直观、简易的理解递归式算法的各个过程并对各个过程的分析、合并,但因为需要要画递归树,所以比较复杂。代换法也仅适合在已经大致猜测出算法的复杂...原创 2018-07-25 17:19:34 · 13301 阅读 · 1 评论 -
算法分析——排序算法(归并排序)复杂度分析(递归树法)
前面对算法分析的一些常用的 渐进符号 做了简单的描述,这里将使用归并排序算法做为一个实战演练。这里首先假设读者对归并排序已经有了简单的了解(如果不了解的同学可以自行百度下归并排序的原理)。了解此算法的同学应都知道,归并排序的主要思想是 分而治之(简称分治)。分治算法的基本模式也基本上分为以下三大步骤:1.问题分解成若干子问题,使子问题的解决起来足够简单,甚至达到常量级别θ(1)2.子问...原创 2018-07-15 23:03:26 · 7622 阅读 · 0 评论 -
算法分析——排序算法(归并排序)复杂度分析(代换法)
上篇文章中我们对归并排序的时间复杂度使用递归树法进行了简答的分析,并得出了结果归并排序的时间复杂度为,这里将使用代换法再进行一次分析。使用代换法解递归式的时候,主要的步骤有两步: 1)猜测解的结果 2)使用数学归纳法验证猜测结果 由上篇文章的递归树分析中我们得出,我们这里将使用代换法对归并排序的递归式进行求解,下面分别用,,三个证明进行代入分析。...原创 2018-07-19 23:07:49 · 2172 阅读 · 2 评论