算法
文章平均质量分 80
TD_Lsw0829
程序猿的世界你不懂~
展开
-
快速排序的JAVA实现
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。最坏情况的时间复杂度为O(n2),最好情况时间复杂度为O(nlog2n)。 假设要排序的数组是A[1]……A[N],首先任意选取一个数据(原创 2014-07-16 18:43:46 · 455 阅读 · 0 评论 -
堆排序的JAVA实现
package sort;public class MySort {/*** @param args*/private static int heapSize;//双亲编号private static int parent(int i) {return i / 2;}//左孩子编号private static int leftChild(原创 2014-07-16 17:55:04 · 566 阅读 · 0 评论 -
归并排序算法的JAVA实现
归并排序(Merge sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。算法步骤:1. 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列2. 设定两个指针,最初位置分别为两个已经排序序列的起始位置3. 比较两个指针所指向的元素,选择原创 2014-07-17 11:32:59 · 784 阅读 · 0 评论 -
二分查找算法的JAVA实现
二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn) 。原创 2014-07-17 12:36:42 · 614 阅读 · 0 评论 -
线性查找的JAVA实现
BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最坏情况下,依然能达到o(n)的时间复杂度,五位算法作者做了精妙的处理。算法步骤:1. 将n个元素每5个一组,分成n/5(上界)组。2. 取出每一组的中位数,任意排序方法,比如原创 2014-07-18 17:46:54 · 1298 阅读 · 3 评论 -
图的深度优先遍历算法的递归与非递归JAVA实现
深度优先算法思想原创 2014-07-22 13:31:41 · 6203 阅读 · 1 评论 -
图的广度优先遍历算法JAVA实现
用邻接矩阵存储图1. 确定图的顶点个数和边的个数2. 输入顶点信息存储在一维数组 vertex 中3. 初始化邻接矩阵;4. 依次输入每条边存储在邻接矩阵 arc 中输入边依附的两个顶点的序号 i,j;将邻接矩阵的第 i 行第 j 列的元素值置为 1 ;将邻接矩阵的第 j 行第 i 列的元素值置为 1 ;原创 2014-07-22 14:55:50 · 1152 阅读 · 0 评论 -
Dijkstra算法的Java实现
Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。 Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。其基本思想是,设原创 2014-07-22 18:00:19 · 1208 阅读 · 0 评论 -
ACM斗牛游戏算法JAVA实现
题目描述在中国传统的牌类游戏中蕴含了很多有意思的数学问题,斗牛就是一种有趣的扑克牌游戏,参与斗牛的玩家每回合会得到五张扑克牌,每张牌可能是A、2、3、4、5、6、7、8、9、10 、J、 Q、 K中的任意一张,这些牌分别代表一个数,就是其本身,对于特殊的牌,我们规定A代表1,J、Q、K和10是等价的,玩家拿到五张牌后,可以任意取三张牌,如果三张牌的点数相加为10或者10的倍数(比如20或者原创 2014-07-29 17:58:10 · 7412 阅读 · 0 评论