学习python算法:分而治之算法
分而治之算法的基本思想是将一个大小为N的问题分解为K个大小更小的子问题。这些子问题彼此独立,并且与原问题具有相同的特征。通过找到子问题的解,就可以得到原问题的解。它是一种部分目标完成程序算法。简单的问题可以用二分法来解决。
1。分而治之算法
当我们使用分而治之算法解决问题时,我们将一个问题分成几个小问题,然后通过每个小问题的答案找到合适的答案。如果数据量仍然比较大,可以再次执行分治算法,直到找到答案。
分而治之算法的解决问题步骤一般如下:
(1)分解,将要解决的问题分成几个较小的相似问题;
(2)求解当子任务划分得足够小时,用更简单的方法求解;
(3)按照原问题的要求进行交织,将子问题的解逐层交织,形成原问题的解。
![]()
2。求n个元素中的最小值
当列表中有n个数据时,求最大值。当然,我们可以使用Python直接解决这个问题,通过max()函数和min()函数来解决,这里我们使用分治算法来解决这个问题。
问题分析,如果这个问题的数据量小于等于2,我们可以通过判断找到最小值,所以我们要做的就是想办法把这几个数据转化为两个数据比较。 ,那么我们可以先将数据从中间分成左右两部分,然后将每部分通过递归分成左右两部分,直到数据大小小于等于2,返回结果,然后重复最后分成两个数据进行比较,可以找到最小值。代码 [ ::, 4。总结 关于分而治之算法,其本质就是让每个子问题独立,然后递归地求解,以帮助我们。解决大数据规模的问题是它的缺点,而当子问题不是时。必须问独立的公共子问题,因此我们在使用它时必须考虑它是否适合分而治之算法。len(数字)? ♂]: ] 其他: 返回 求解(数字): • n = fis]#大于主元的元素存储在列表中返回,♹, def find(number,key):# 求第k个小元素 fis,small,big = ❙number分解n= len(垃圾) ⓶ n = 键: 返回 fis#查找 elif❓ n 其他:返回找到(垃圾, key)#递归分治 __name__ == '__main__': 列表7,? 列出,5)) 打印(33'0'最小:❝ 列表,10))2输出结果为: 12 5最小元素:1710最小元素:29
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网