五大常用算法之一:分治算法一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(...
分类:
编程语言 时间:
2015-02-04 10:52:10
阅读次数:
232
今天对归并排序做个简短的总结,归并排序的思想是分治法的一种表现,因为可以用递归来解决对某一无序序列进行排序。归并操作的思想大致分为以下几种步骤:1,申请一块空间(抽象一点就是初始化一个数组)用来存放合并后的序列2,设置两个指针(或下标),指向两个已经排序好的序列的首部,也就是下标为0指向第一个元素3...
分类:
编程语言 时间:
2015-02-03 21:08:26
阅读次数:
215
题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。思路:我们可以使用分治法或者减治法来处理这个问题。分治法 目标:把1个大问题分成2个小问题,2个小问题还可以再分,直到问题规模小的可....
分类:
编程语言 时间:
2015-02-03 19:07:06
阅读次数:
210
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
一开始我没有采用分治法,解题思路是:首先比较每条链表的第一个元素,找出最小的那个,插入新链表并从原链表删除,如此反复直至所有的链表都为空链表。基于这个愚蠢的解题思路,我的C++代码实现如下:
...
分类:
其他好文 时间:
2015-02-03 17:19:27
阅读次数:
158
Find the contiguous subarray within an array (containing at least onenumber) which has the largest sum.
For example, given the array [?2,1,?3,4,?1,2,1,?5,4],
the contiguous subarray [4,?1,2,1] has t...
分类:
其他好文 时间:
2015-02-02 23:16:28
阅读次数:
368
问题:当给定存在静态表(如数组)中的n个元素,如何快速找到其中位数、最小值、最大值、第i小的数?
首先想到的方法是先对数组元素进行排序,然后找到第i小的元素。这样是可行的,但比较排序最快也需要O(nlgn),能否在线性时间内解决呢。这就是随机的分治法—随机选择。
思想:利用随机划分(在快速排序中介绍过)找到主元r,这样就将小于等于r的元素放在了其左边,大于r的元素放在了其右边。这...
分类:
编程语言 时间:
2015-02-02 23:09:19
阅读次数:
213
算法分析基本思想维基百科中记录:快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。步骤为:从数列中挑出一个元素,称为"基准"(pivot),重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(...
分类:
编程语言 时间:
2015-01-30 17:23:16
阅读次数:
233
高速排序因为排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被採用,再加上高速排序思想----分治法也确实有用,因此非常多软件公司的笔试面试,包含像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也经常出现高速排序的身影。总的说来,要直接默写出高速排序...
分类:
编程语言 时间:
2015-01-30 17:12:10
阅读次数:
230
原文链接:http://my.oschina.net/lee24/blog/74949初级:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟...
分类:
其他好文 时间:
2015-01-29 11:56:40
阅读次数:
244
快速排序(Quick Sort)使用分治法策略。它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序流程:(1...
分类:
编程语言 时间:
2015-01-26 15:08:12
阅读次数:
202