算法
278木木
“路漫漫其修远兮”,敲键盘的日子里,不寂寞。
展开
-
八皇后问题(java实现)
1.问题描述: 八皇后问题,是一个古老而著名的问题,同时是回溯算法的典型案例。 该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。 2.解决思路:数原创 2016-04-12 14:45:34 · 323 阅读 · 0 评论 -
汉诺塔问题(java实现)
1.问题描述:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 2.问题解析假设有X,Y,Z三根柱子,现将X上的圆盘移动至Z盘,期间可以借助Y盘。 若只有一个圆盘,原创 2016-04-13 18:27:29 · 670 阅读 · 0 评论 -
插入排序(java实现)
基本概念:一种简单的,稳定的排序方式,复杂度为O(n^2),适合元素少时使用。初步理解:首先,假设有一组排好序(由小到大)的数据,现今要插入一个数字,其步骤为将该数字 从后至前与之前的数据进行比较,最终插入小于等于该数字的后面。那么,在实际用中,我们先把第一个数看做是一组已经排好序的数据 ,将第二个数按之前的方式 插入排好序的数组中,接着又将第一和第二两个数看做排好序的数据,又将第三个数按之前的方插原创 2016-04-08 16:20:06 · 249 阅读 · 0 评论 -
二分法插入排序(java实现)
概要:二分法插入排序是在直接插入排序的基础上多了一个二分法查找的过程,该过程在一定程度上缩短了比较的次数,进行了细微的优化。二分法插入排序也是一种稳定的排序方法,其复杂度仍为O(n^2),适合排序较少元素时使用。思路:二分法插入排序是在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left>right,然后再把第i个元原创 2016-04-09 10:39:08 · 671 阅读 · 0 评论 -
快速排序(java实现)
基本概念:快速排序是比较常用的一种排序方式。其时间复杂度为:平均时间O(nlogn),最坏情况O(n^2)。 稳定性:不稳定的排序方法。基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。代码:public class quickOrd原创 2016-04-10 10:35:41 · 212 阅读 · 0 评论 -
冒泡排序(java实现)
1.基本概念一种简单的,稳定的排序方式,复杂度为O(n^2)。2.步骤:冒泡排序算法的运作如下:(按从小到大排序)比较相邻的元素。如果第一个比第二个大,就交换他们两个 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数 针对所有的元素重复以上的步骤,除了最后一个 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较 3.代码public原创 2016-04-11 12:40:42 · 354 阅读 · 0 评论