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实现如下算法: 1.链表 链表用来存储数据,由一系列的结点组成。这些结点的物理地址不一定是连续的,即可能连续,也可能不连续,但链表里的结点是有序的。一个结点由数据的值和下一个数据的地址组成。一个链表...
决策树生成算法的Java实现,可能还有一些BUG,没有做仔细校验与测试,完成主要功能。决策树具体详解移步:http://blog.csdn.net/adiaixin123456/article/details/50573849 项目的目录结构分为四个文件夹algorithm,...
该算法在 Java 中以两种方式实现。第一个实现使用 Java 并行流和 lambda 表达式。该解决方案利用能够提供有竞争力的加速的内置多线程组织。第二个实现是在Theatre actor系统之上实现的,该系统通过细粒度的资源控制...
//记录下标 } } minindex++; System.out.println("最小值为:"+min); System.out.println("最小值是数组中的第"+minindex+"个数"); //输出七个数中的最大值 int maxindex=0; //定义变量minindex...
随机生成磁盘序列 用java实现了FIFO、SSTF、SCAN和C-SCAN算法模拟磁盘调度 有用户界面,有序列结果记录,有计算移动磁道数
import java.util.Random; /** * 排序测试类 * * 排序算法的分类如下: * 1.插入排序(直接插入排序、折半插入排序、希尔排序); * 2.交换排序(冒泡泡排序、快速排序); * 3.选择排序(直接选择排序、堆...
用Java实现基础数据结构,排序算法、经典算法以及leetcode刷题记录_Java_下载.zip
所谓排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序。这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后的数据便于筛选和计算,大大提高了计算效率。 对于排序,我们首先...
简介:这份资源是我以前偶然间在网上找到的一份前辈总结的很实用的java实例,有时间我就拿出来看看,不只是应用,算法的实现过程也很重要。我觉得这份文档对于java开发人员来说是很实用的,所以拿出来分享一下。 ...
排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际...
算法基础、数据结构、基本算法思路、排序算法、查找算法、基本数学问题、数据结构问题、数论问题、经典算法、游戏中的算法、密码学概述、压缩与解压缩算法、算法面试题等内容
用Java实现基础数据结构,排序算法、经典算法以及leetcode刷题记录_Java_下载.zip
算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...
用Java代码实现了以下三个算法。注释清晰、完整,希望对初涉及数据结构或图论的朋友有一定帮助。 1汉诺塔问题: 包括了三种实现方式。a传统递归;b非递归,用Stack;c非递归,直接根据通项式规律求出 2普里姆算法: ...
(2)较熟练地运用C语言编写相应的算法程序。 (3)联系已学过的内容,巩固所学的理论,增强独立工作能力。 (4)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。 (5)通过...
Java_Algorithm(Java算法集合) 学习算法是为了什么? 1、应对大型IT公司的算法面试题; 2、IDE即对编译算法的封装; 3、搜索引擎中对几千、几亿数据进行优劣排序; 4、游戏对算法的引用是非常丰富的; 5、算法对...
Java毕业设计-基于ssm框架的协同过滤算法的离散数学题推荐系统(源码+说明+演示视频) 【项目技术】 java+mysql+ssm+b/s 【实现功能】 包括学生的功能和管理员的功能以及教师功能。其中学生功能包括参加考试、个性化...
大数据算法在数据分析中发挥着重要的作用,它可以提高分析工作的效率和准确性,为决策提供有力支持。具体来说,大数据算法可以分类、聚类、预测和关联规则分析等,从而发现数据之间的规律和关联关系,挖掘出潜在的...