算法 Java

以下是为您整理出来关于【算法 Java】合集内容,如果觉得还不错,请帮忙转发推荐。

【算法 Java】技术教程文章

快速排序算法(java实现)

public class HelloJava{ public static void main(String[] args) { int[] arr1 = new int[] {45,40,90,30,80,70,50}; System.out.println("排序前: "); for(int i=0; i<arr1.length; i++) { System.out.print(arr1[i]+" "); } System.out.println(); System.out.println("快速排序后:"); quickSort(arr1, 0, arr1.length-1); int[] arr2 = new int[] {11,52,4,5,65,4,2,1,45}; System.out.println("排序前: "...

LRU (Least Recently Used) 算法的Java实现

实现代码如下:import java.util.LinkedHashMap; import java.util.Map;/*** LRU (Least Recently Used) 算法的Java实现* @param <K>* @param <V>* @author 杨尚川*/ public class LRUCache<K, V> extends LinkedHashMap<K, V> {//缓存大小private int cacheSize;public LRUCache(int cacheSize) {//第三个参数true是关键super(10, 0.75f, true);this.cacheSize = cacheSize;}/*** 缓存是否已满的判断* @param eldest* @return*/@O...

Floyd算法之java详解【代码】【图】

弗洛伊德算法介绍和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。基本思想 通过Floyd计算图G=(V,E)中各个顶点的最短路径时,需要引入一个矩阵S,矩阵S中的元素a[i][j]表示顶点i(第i个顶点)到顶点j(第j个顶点)的距离。 假设图G中顶点个数为N,则需要对矩阵S进行N次更新。初...

8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,循环控制及其优化【代码】【图】

上两篇博客8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,数据结构“栈”实现研究了递归方法实现回溯,解决N皇后问题,下面我们来探讨一下非递归方案实验结果令人还是有些失望,原来非递归方案的性能并不比递归方案性能高代码如下:package com.newflypig.eightqueen;import java.util.Date;/*** 使用循环控制来实现回溯,解决N皇后* @author newflydd@189.cn* Time ...

八大排序算法的java实现【代码】

有时间再贴算法分析图JDK7的Collections.sort()的算法是TimSort, 适应性的归并排序, 比较晦涩难懂, 这里没有实现publicclass mySort {// 冒泡排序publicstaticvoid myBubbleSort(int[] array) {int lastExchange = array.length - 1; //记录最后交换位置, 避免重复比较for (int i = lastExchange - 1; i >= 0; --i) {for (int j = 0; j <= i; ++j) {if (array[j] > array[j + 1]) {int temp = array[j];array[j] = array[j + 1]...

从海量数据中查找出前k个最小或最大值的算法(java)

现在有这么一道题目:要求从多个的数据中查找出前K个最小或最大值分析:有多种方案可以实现。一、最容易想到的是先对数据快速排序,然后输出前k个数字。             二、先定义容量为k的数组,从源数据中取出前k个填充此数组,调整此数组的最大值maxValue到首位,然后对剩下的n-k个数据迭代,对于每个遍历到的数字x,如果x < maxValue,用x把maxValue替换掉,然后调整数组最大值的位置。             三...

【数据算法】Java实现二叉树存储以及遍历【代码】

二叉树在java中我们使用数组的形式保存原数据,这个数组作为二叉树的数据来源,后续对数组中的数据进行节点化操作。步骤就是原数据:数组节点化数据:定义 Node节点对象存储节点对象:通过LinkedList保存Node节点对象在操作过程中我们需要将当前结点和前一节点、后一节点进行关系绑定 package tree; import java.util.LinkedList; import java.util.List; /** * 功能:把一个数组的值存入二叉树中,然后进行3种方式的遍历 *...

K-means算法Java实现

publicclassKMeansCluster { privateintk;//簇的个数 privateintnum = 100000;//迭代次数 privateList<double> datas;//原始样本集 privateString address;//样本集路径 privateList<point> data = newArrayList<point>(); privateAbstractDistance distance = newAbstractDistance() { @Override publicdoublegetDis(Point p1, Point p2) { ...

排序算法Java实现(基数排序)【代码】

1package sorting;2 3/** 4 * 基数排序5 * 平均O(d(n+r)),最好O(d(n+r)),最坏O(d(n+r));空间复杂度O(n+r);稳定;较复杂6 * d为位数,r为分配后链表的个数7 * @author zeng8 *9*/10publicclass JishuPaixu { 1112publicstaticint getNumInPos(int num, int pos) { 13int tmp = 1; 14for (int i = 0; i < pos - 1; i++) { 15 tmp *= 10; 16 } 17return (num / tmp) % 10; 18 } 1920publicstaticint getMaxWeishu...

隐马尔科夫模型的维特比算法java实现,详细原理请自行查看52nlp的

/** * 【计算维特比矩阵】 * delta[ t ][ k ] = v_k(i) =log( max(P(pi in state k has sym i | path pi)) ) */ public void CalculateViterbiMatrix() { int T = O.length; delta = new double[ T ][N]; PSI = new int[ T ][N]; //1、初始化,计算初始时刻(直觉上的第1时刻)所有状态的局部概率 for (int i = 0; i < N; i++){ delta[0][i] = logPI[ i ] + logB[ i ]...