
算法设计与分析
文章平均质量分 66
originalIntention
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序算法终结总结<Java实现>
/** * 排序算法学习之希尔排序 * 实现方法: * 希尔排序是特殊的插入排序 * 插入排序按照处理的子数组长度递增分为多趟插入操作 * 而每一趟插入操作处理的子数组元素索引间隔都是1(即步长) * 希尔排序每趟处理的子数组元素索引间隔是动态的。 */ package 排序算法.shellSort; public class ShellSort { /** * 对输入数组进原创 2012-11-26 11:17:49 · 763 阅读 · 0 评论 -
递归分治算法之N皇后问题(Java版本)
package 递归分治; /* * 在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照 * 国际象棋的规则,皇后可以攻击与之处在同一行或同 * 一列或同一斜线上的棋子。n后问题等价于在n×n格的 * 棋盘上放置n个皇后,任何2个皇后不放在同一行或同 * 一列或同一斜线上。 * 解向量:(x1, x2, … , xn) * 显约束:xi=1,2, … ,n * 隐约束: * 1原创 2012-11-28 00:03:53 · 1427 阅读 · 0 评论 -
递归分治算法之整数划分问题(Java版本)
/** * 递归分治算法学习之整数分割 * @author Sking */ package 递归分治; public class IntegerDivision { /** * 整数划分的核心方法,返回整数n被划分为因子不大于m的划分总个数 * @param n 被划分的整数 * @param m 限制因子不大于m * @return 划分的总个数 */ publ原创 2012-11-28 00:02:41 · 1649 阅读 · 0 评论 -
递归分治算法之二维数组二分查找(Java版本)
/** * 递归分治算法学习之二维二分查找 * @author Sking 问题描述: 存在一个二维数组T[m][n],每一行元素从左到右递增, 每一列元素从上到下递增,现在需要查找元素X(必在二维 数组中)在数组中的位置,要求时间复杂度不超过m+n. */ package 递归分治; public class BinarySearchInArray { /** * 二维二分搜索的原创 2012-11-28 00:15:05 · 2333 阅读 · 0 评论 -
递归分治算法之线性选择(Java版本)
/** * 递归分治算法之线性选择 */ package 递归分治; /* * 线性选择算法 * 给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素 * 在最坏情况下,算法randomizedSelect需要O(n2)计算时间, * 可以证明,算法randomizedSelect可以在O(n)平均时间内找出n个输入元素中的第k小元素。 */ import原创 2012-11-28 00:11:04 · 1453 阅读 · 0 评论 -
递归分治算法之比赛日程表(Java版本)
package 递归分治; //设有n=2^k个运动员进行循环赛,设计一个比赛日程表 //每个选手必须与其他n-1个选手各赛一次 //每个选手一天只能进行一场比赛 //循环赛一共要进行n-1天 //日程表设计成n行n-1列的表格,其中第i行j列表示第i个选手在第j天遇到的选手 public class round_robin { private static int[][] a; publi原创 2012-11-28 00:10:06 · 1176 阅读 · 0 评论 -
递归分治算法之随机快速排序(Java版本)
/** * 递归分治算法学习之随机快速排序 * 采用随机选择枢纽元素的快速排序算法 * @author Sking */ package 递归分治; import java.util.Random; public class randomizedQuickSortTest { /** * 采用随机选取枢纽元素策略的一次快排后的划分索引 * @param a 待排序数组 *原创 2012-11-28 00:08:55 · 2159 阅读 · 0 评论 -
递归分治算法之矩阵链问题(Java版本)
/** *递归分治算法之矩阵链 *@author Sking */ package 递归分治; public class MatrixChainMultiplication { /** * 递归分治问题之矩阵链问题 * @param s s[i][j]存放矩阵链[i-j]分开的位置 * @param p 矩阵链维度数组 * @param i 矩阵链左端索引 * @原创 2012-11-28 00:05:06 · 955 阅读 · 0 评论 -
递归分治算法之全排列问题(Java版本)
/** * 递归分治算法学习之全排序 * @author Sking */ package 递归分治; public class FullPermutation { /** * 产生指定数组指定索引范围的元素的全排列 * list[k....m]的全排列,在全排列中list[k..m] * 中的任何一个元素都可能在索引k的位置上。 * 所以交换出list[k]的位置,相当原创 2012-11-28 00:01:32 · 1181 阅读 · 0 评论 -
递归分治算法之棋盘分割问题(Java版本)
/** * 递归分治算法学习之分割棋盘 * @author Sking 棋盘分割问题: 在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其他方格 不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在 棋盘覆盖问题中,要用4种不同形态的L型骨牌覆盖给定的特殊棋盘 上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。 */ package 递归分治; public原创 2012-11-28 00:00:16 · 1081 阅读 · 0 评论 -
递归分治算法之二分搜索(Java版本)
/** * 递归分治算法学习之一维二分搜索 * 被搜索的数组必须是有序的才能使用二分搜索算法 * @author Sking 性能: 时间复杂度为O(log(n)) */ package 递归分治; public class BinarySearch { /** * 在指定数组中搜索指定元素 * @param a 指定的数组 * @param x 待搜索的元素 * @r原创 2012-11-27 23:59:02 · 787 阅读 · 0 评论 -
递归分治算法之合并排序(Java版本)
/** * 排序算法学习之合并排序 * @author Sking 实现方法: 将待排序数组中相邻元素两两配对作为子数组,排序各个子数组, 构成n/2组长度为2的排序好的子数组;然后将长度为2的子排序 子数组再两两配对,并排序,构成长度为4的已排序子数组。如此递归 直到整个数组是已排序为止。 最坏时间复杂度:O(n*log(n)) 平均时间复杂度:O(n*log(n))原创 2012-11-28 00:06:30 · 1164 阅读 · 0 评论