
算法
#@21
这个作者很懒,什么都没留下…
展开
-
归并排序算法并附上其时间复杂度
其时间复杂长度T(n) = cn*(lgn + 1) = cnlgn + cn。当n足够大时,常量c和cn可以忽略不计。时间复杂度:假设有n个元素。也就是递归了lgn + 1次。调用merge的代价为cn。2、解决这些子问题:递归求解各子问题。如果子问题的规模足够小,则直接求解。1、将原问题分解成若干个子问题,这些问题是原问题的规模较小的实例。3、合并这些子问题的解成原问题的解。则T(n) = O(nlgn)原创 2024-09-01 20:49:45 · 326 阅读 · 0 评论 -
插入排序算法并附上如何求出其时间复杂度
则T(n) = c1*n + c2*(n -1) + c3*(n*(n+1)/2 - 1) + c4*(n*(n-1)/2 ) = ((c3+c4)/2)*n^2 + (c1 + c2 + c3/2 - c4/2)*n - (c3 + c4) =所以:插入排序算法时间复杂度T(n) = a*n^2 + b*n +c = O(n^2)执行第12~13行的代价为c4,其执行n*(n-1)/2次。执行第10行的代价为c3,其执行n*(n+1)/2 -1。执行第6行的代价为c1,其一共执行n次。原创 2024-08-29 15:05:25 · 218 阅读 · 0 评论 -
求最大子数组问题并附上如何求出其时间复杂度
因此其时间复杂度为T(n) = O(1) + O(1) + O(n) + O(nlgn + n) = nlgn + O(n) + O(n) +O(1) + O(1)第一种思想:采用非递归的、线性时间的算法。当n足够大时, O(n) + O(n) +O(1) + O(1)这部分可以忽略不计,则T(n) = O(nlgn)第二种思想:采用分治策略,将问题简单化,之后将出来的解再进行合并。当 n = 1,也就花费的代价就是执行这一部分代码,则T(1) = O(1)原创 2024-08-28 17:03:17 · 214 阅读 · 0 评论