归并排序是分治思想的一个很典型的应用,它将待排序数组A[0...n-1]划分为A[0...m]和A[m+1...n]两个部分(其中m=(n-1)/2),然后对两个子数组分别排序,并以较小的时间代价将合并 一.算法 1.归并排序算法 2.合并排好序的子数组 二.归并排序算法的效率(假设n是2的冥) 设 ...
分类:
编程语言 时间:
2017-03-29 01:08:00
阅读次数:
257
分治算法在树的路径问题中的应用 一、树的分治算法 树的分治算法是分治思想在树型结构上的体现。 任一个具有n个节点的连通路,它的任何一棵树的树枝数为n-1 分治:除去树中的某些对象,使原树被分解成若干互不相交的部分。 分治算法分为两种:一种是点的分治,一种是边的分治 1.基于点的分治 1.选取一个点将 ...
分类:
其他好文 时间:
2017-03-24 20:29:34
阅读次数:
177
点分治是一种树分治算法(昨天听了清华大佬Ryz的课,感觉这个人讲的还可以,虽然后面有蛮多没听懂,比如再套一些七里八里的数据结构) 在解决树上路径满足某种属性的数量统计方面有着很大的作用 点分治的基本思想如下: 考虑到树上的路径对于一个点来说只有两种情况:一是经过这个点,二是不经过这个点 对于不经过这 ...
分类:
其他好文 时间:
2017-03-22 00:56:48
阅读次数:
173
http://bbs.sjtu.edu.cn/bbstcon,board,Algorithm,reid,1225812893.html ...
分类:
编程语言 时间:
2017-03-21 13:10:57
阅读次数:
186
#include<stdio.h>void swap(int a[],int i,int j){ int t=a[i]; a[i]=a[j]; a[j]=t;} /*冒泡排序**/ /* 冒泡排序是最简单最基本的排序方法之一。 冒泡排序的思想很简单,就是以此比较相邻的元素大小,将小的前移,大的后移, ...
分类:
编程语言 时间:
2017-03-09 18:12:31
阅读次数:
191
简介:快速排序是个“综合素质”较好的排序,比如javaSE中的Arrays.sort()实现原理,也是用的是快速排序思想。下面就看看一种快速排序的递归实现方式要点:1,分治思想,把问题划分成可以与本问题处理方式相同的若干子问题,使用递归来解决。如排序问题,可以(1)把原数组A[p,..
分类:
编程语言 时间:
2017-03-08 01:35:39
阅读次数:
221
1. 什么是归并排序? 更详细的解释可以百度,这里说说其主要思想: 归并排序是采用分治思想,将所有的数均匀的分成n个等分的组,然后依次取(x, x+1) 2个等分组,将他们合并排序,形成一个新的组,然后递归即可,最后会合并为一个组,这个组就是有序的。 示范一下: 要排序的11个数 : [8, 3, ...
分类:
编程语言 时间:
2017-01-21 21:12:04
阅读次数:
284
快速排序,也是在实际中最常用的一种排序算法,速度快,效率高。 思想 快速排序采用的思想是分治思想。 快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位 ...
分类:
编程语言 时间:
2017-01-19 15:22:49
阅读次数:
216
从《Cash》谈一类分治算法的应用 分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同.求出子问题的解,就可得到原问题的解.分治算法非常基础,但是分治的思想却非常重要,本文将从今年NOI的一道动态规划问题Cash开始谈如何利用分治思想来解决一类与 ...
分类:
编程语言 时间:
2016-12-11 12:47:45
阅读次数:
245
快速排序(Quicksort)是对冒泡排序的一种改进。快速排序采用的思想是分治思想。
快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速... ...
分类:
编程语言 时间:
2016-10-22 20:48:16
阅读次数:
223