
递归与分治策略
SL_World
中国科学院大学计算机应用技术专业在读研究生
展开
-
递归与分治策略-2.11循环赛日程表
设有n=2^k个运动员要进行网球循环赛,现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能赛一次; (3)循环赛一共进行n-1天。 按此要求在表中第i行和第j列处填入第i个选手在第j天所遇到的选手。 按分治策略,将所有的选手分为两半,n个选手的比赛日程表就可以通过为n/2个选手设计的比赛日程表来决定。递归地用对选手进行分割,直到只原创 2017-10-30 10:24:43 · 1321 阅读 · 0 评论 -
递归与分治策略-2.6棋盘覆盖
棋盘覆盖原创 2017-10-07 20:37:37 · 600 阅读 · 0 评论 -
递归与分治策略-2.1.4全排列
public class test2_1_4 { public static void perm(Object[] list,int k,int m){ //产生list[k:m]的所有排列 if(k==m){ //只剩一个元素 for(int i=0;i<=m;i++) Syst原创 2017-12-03 23:25:57 · 402 阅读 · 0 评论 -
递归与分治策略-2.9.1线性时间选择(随机划分基准)(第k小问题)
import java.util.Random;/** * 线性时间选择——随机选择 */public class test2_9_1 { static Comparable a[] = {"49","38","65","97","76","13","27"}; /** * 返回(left~right)内第k小元素 */ private stat原创 2017-10-13 20:20:59 · 530 阅读 · 0 评论 -
递归与分治策略-2.9.2线性时间选择(取中位数的中位数基准)(第k小问题)
import java.util.Random;/** * 线性时间选择——选择中位数的中位数基准 */public class test2_9_2 { static int n = 100; static Comparable[] a = new Comparable[n]; //暂定长度为100的数组 private static Comparable原创 2017-10-14 14:04:45 · 1617 阅读 · 0 评论 -
递归与分治策略-2.7归并排序及其优化总结
引言:众所周知,归并排序(合并排序)算法是基于分治策略的一个排序算法,其基本思想是:将待排序元素分成大小大致相同的2个子集合,分别对2个子集合进行排序,最终将排序好的子集合合并成为所要求的排好序的集合。具体过程如下图所示(动图源于网络): 如图所示:归并排序需要三个索引分别是i,j,k。其中i指向带排序第一个子集合待比较元素,j指向待排序另一个子集合待比较元素,k指向数组b中的元素。原创 2017-10-07 23:02:26 · 882 阅读 · 0 评论 -
递归与分治策略-2.8快速排序
快速排序的优化过程可以参考我的另一篇博文:《快速排序及其优化过程总结》 快排示意图:/** * 快速排序 */public class test2_8 { static Comparable a[] = {"49","38","65","97","76","13","27"}; private static void qSort(int left,int righ原创 2017-10-11 19:19:59 · 551 阅读 · 0 评论