在编程和算法领域,有哪些经典问题
1个回答
展开全部
对于归并算法,看不懂的话一般是因为没理解什么是归并,为什么用归并。我先给你通俗的说一下这个算法的含义,然后你再看你的教材或者代码实现,相对就好理解了。
归并算法一开始是为了大数据和并行计算而开发出来的,当一段需要排序的数据量非常大的时候,大到内存都装不下了(早期的计算机内存很小,只有KB级别,很容易出现这种现象),这时可以用归并算法,先把这段大数据分成两个或两个以上的数据段,然后先分别对每个数据段进行排序,再把这些排好序的小数据段一个一个的组合起来,组合的时候再排一次序,等到所有的小数据段都被组合了之后,就恢复成了原来的大数据,但是排好序了。在对小数据段分别进行排序的时候,因为它们之间是相互独立的,因此可以用并行计算来加快速度。所以归并算法在早期使用分布计算的时候,或者现在使用多核计算机的时候,速度很快。
对于递归这种思路,其实它就是一种纵深锚点思维能力,可以通过训练来加强。方法很简单,就是训练找锚点的能力,锚点就是递归中的返回条件。找准了锚点,递归的过程是不用考虑的,有多少层的递归调用都不用理会,只要明白什么条件下会结束递归、层层返回就行了。
归并算法一开始是为了大数据和并行计算而开发出来的,当一段需要排序的数据量非常大的时候,大到内存都装不下了(早期的计算机内存很小,只有KB级别,很容易出现这种现象),这时可以用归并算法,先把这段大数据分成两个或两个以上的数据段,然后先分别对每个数据段进行排序,再把这些排好序的小数据段一个一个的组合起来,组合的时候再排一次序,等到所有的小数据段都被组合了之后,就恢复成了原来的大数据,但是排好序了。在对小数据段分别进行排序的时候,因为它们之间是相互独立的,因此可以用并行计算来加快速度。所以归并算法在早期使用分布计算的时候,或者现在使用多核计算机的时候,速度很快。
对于递归这种思路,其实它就是一种纵深锚点思维能力,可以通过训练来加强。方法很简单,就是训练找锚点的能力,锚点就是递归中的返回条件。找准了锚点,递归的过程是不用考虑的,有多少层的递归调用都不用理会,只要明白什么条件下会结束递归、层层返回就行了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询