package com.algorithm;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary.Hex;
public class Algorithm {
public static void main(String args[])
{
//冒泡排序
//sort();
//九九乘法表
//multiplicationTable();
//阶乘
System.out.println(factorial(6));
//md5文件摘要
testMessageDigest();
}
/**
* 计算n的阶乘
* @param n
*/
public static int factorial(int n)
{
if(n>1)
{
return n*factorial(n-1);
}
return 1;
}
/**
* 九九乘法表
*/
public static void multiplicationTable()
{
for(int i=1;i<10;i++)
{
for(int j=1;j<=i;j++)
{
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.println("\n");
}
}
/**
* 冒泡排序(升序)
*/
public static void sort()
{
int a[]={2,3,1,6,90,89,50};
for(int i=0;i<a.length;i++)
{
for(int j=a.length-1;j>i;j--)
{
int tmp=0;
if(a[i]>a[j])
{
tmp=a[j];
a[j]=a[i];
a[i]=tmp;
}
}
}
for(int i=0;i<a.length;i++)
System.out.println(a[i]);
}
/**
* md5文件校验
* @return
* @throws NoSuchAlgorithmException
* @throws IOException
*/
public static String testMessageDigest() throws NoSuchAlgorithmException, IOException
{
//文件路径
String filePath="d:\\commons-codec-1.6-bin.zip";
//构建文件输入流
FileInputStream fis=new FileInputStream(new File(filePath));
//初始化MessageDigest,并指定md5算法
DigestInputStream dis=new DigestInputStream(fis,MessageDigest.getInstance("MD5"));
//流缓冲大小
int buf=1024;
//缓冲字节数组
byte[] buffer=new byte[buf];
//读取字节数组并更新摘要,如果更新摘要功能开启的话(默认开启)
while((dis.read(buffer,0,buf))>-1)
{
dis.read(buffer,0,buf);
}
//关闭流
dis.close();
//获得MessageDigest
MessageDigest md=dis.getMessageDigest();
//摘要处理
byte[] b=md.digest();
//十六进制转换
String md5Hex=Hex.encodeHexString(b);
System.out.println(md5Hex.equals("b9ff59c674928d0250f4a0b30c438974"));
//十六进制转换
return md5Hex;
}
}
附件中为apache算法包commons-codec-1.6.jar
分享到:
相关推荐
Java算法大全源码包是一个集合,包含了众多使用Java语言实现的算法示例代码。这个压缩包为学习和理解计算机科学中的各种算法提供了宝贵的资源。在Java编程中,掌握算法是提升编程技能和解决复杂问题的关键。下面将...
Java算法是编程领域中的核心部分,它涉及到计算机科学的基础理论和问题解决的技巧。本篇主要探讨几个在Java中常见的算法,这些算法在实际开发中有着广泛的应用。 1. **排序算法**:Java中实现排序有多种方式,如...
Java实现如下算法: 1.链表 链表用来存储数据,由一系列的结点组成。这些结点的物理地址不一定是连续的,即可能连续,也可能不连续,但链表里的结点是有序的。一个结点由数据的值和下一个数据的地址组成。一个链表...
Java协同过滤推荐算法是一种在Java环境下实现的个性化推荐系统的核心技术。它主要应用于大数据环境中的信息过滤,通过分析用户的历史行为和偏好,预测用户可能对哪些未知项目感兴趣,从而为用户提供个性化的推荐服务...
### Java遗传算法寻找最优路径 #### 一、遗传算法概览 遗传算法(Genetic Algorithm, GA)是一种基于自然选择和遗传学原理的全局优化技术。它通过模拟自然界中的生物进化过程来解决优化问题,包括搜索空间较大的...
【Java算法刷题笔记(LeetCode、牛客)】这篇笔记主要涵盖了三个核心知识点:双指针技巧、哈希表的应用以及深度优先搜索算法(DFS)。 1. **双指针技术**: 双指针是算法中常用的一种技巧,通常用于处理链表和数组的...
### Java算法:实现压缩及解压缩 #### 一、压缩功能实现 在Java中实现文件压缩功能主要依赖于`java.util.zip`包中的类。以下是对压缩代码的详细解析: ##### 1. 导入所需类库 ```java import java.io....
原始数据可能包含用户购买记录,而`tmp.xlsx`可能是经过预处理后的数据,或者用于存储算法运行结果。 在实际应用中,Apriori算法的效率是个挑战,因为它可能导致大量的候选项集。为了优化,可以采用如下策略: - ...
总之,HS和LCR算法是分布式系统中实现领导者选举的基础,通过Java实现这些算法,可以理解和掌握分布式系统中的核心概念,为构建高可用、强一致性的分布式应用打下坚实基础。在实际工程实践中,我们还需要根据具体...
Java 分页算法是Java开发中常见的一种数据处理技术,尤其在大数据量的Web应用中,为了提高用户体验,通常会将数据分成多页展示,而不是一次性加载所有数据。这里我们将详细探讨如何实现一个简单的Java分页算法。 ...
在Java中实现FP树算法,我们可以按照以下步骤进行: 1. **数据预处理**:首先,我们需要对原始数据进行预处理,将交易数据转换为事务ID和项ID的形式,即每条记录表示一个交易,其中包含交易中出现的所有项。 2. **...
根据提供的文件信息,“Java常用算法手册.pdf”似乎是一份针对Java程序员的学习资源,旨在帮助他们掌握和提升在算法方面的知识与技能。然而,基于提供的简短描述和部分内容来看,并没有直接涉及具体的算法知识点,...
本资料集的核心是“算法(个人总结).pdf”,其中详细记录了作者在算法研究过程中的思考和实现。这不仅包括基础的排序和搜索算法,如冒泡排序、快速排序、二分查找等,还涵盖了图论、动态规划、回溯法等高级算法。每...
在Java代码实现中,通常会定义一个资源矩阵来表示系统的总资源,一个需求矩阵来存储每个进程对资源的需求,一个已分配矩阵记录已经分配给每个进程的资源,以及一个可用矩阵记录当前系统空闲的资源。 在描述中提到,...
基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法是:先取一个小于n的整数增量序列t1,t2,…,tk,其中ti>tj,tk=1;然后按增量序列个数k,对序列进行k趟排序;每趟排序,...
【标题】"java写的免疫遗传算法"涉及到的核心概念是编程语言Java和优化计算方法——免疫遗传算法。免疫遗传算法是一种融合了生物免疫机制与遗传算法的优化技术,用于解决复杂问题的全局寻优。 免疫遗传算法是计算...
在本文中,我们将深入探讨如何使用Java解决农场灌溉问题,这是一种经典的计算机科学问题,涉及到算法设计、回溯法以及用户界面的实现。首先,我们来理解这个问题的基本设定:假设有一个N×N的农场,目标是确定最少...
总结起来,n皇后问题通过回溯算法在Java中的实现,不仅锻炼了我们的逻辑思维能力,也让我们更好地理解了递归和回溯这两种重要的编程技巧。同时,这个问题也为我们提供了一个在有限搜索空间中寻找解的有效方法,这在...
在Java编程领域,数据结构和算法是至关重要的组成部分,它们是高效解决问题的基础。"Java 数据结果和算法"第二版深入探讨了如何利用Java语言来理解和实现各种数据结构以及算法,帮助开发者提升编程技能和问题解决...