java算法学习

最大公约数

  欧几里得算法

    描述:计算两个非负整数p和q的最大公约数:

  • 若q是0,则最大公约数为p。
  • 否则,将p除以q得到余数r,p和q的最大公约数即为q和r的最大公约数。

  根据算法的自然描述,我们可以很轻松地得到以下的递归实现:

1 public static int euclid(int p, int q) {
2
3     if (q == 0)
4         return p;
5
6     int r = p % q;
7     return euclid(q, r);
8 }

  

时间: 2024-08-29 03:46:12

java算法学习的相关文章

Java算法学习-----------------归并排序算法

将数组中的相邻元素两两配对,用归并算法进行排序,构成n/2组长度为2的排好序的子数组段,然后再将其排成长度为4的子数组段,如此继续下去直到整个数组排好序. 按照此思想,消除递归后的归并排序算法(伪代码)如下: public class MergeSort { public static void mergeSort(Comparable[]a) { Comparable[]b=new Comparable[a.length]; int s=1; while (s<a.length) { merg

基于java的InputStream.read(byte[] b,int off,int len)算法学习

public int read(byte[] b, int off, int len) throws IOException 将输入流中最多 len 个数据字节读入字节数组.尝试读取多达 len 字节,但可能读取较少数量.以整数形式返回实际读取的字节数. 在输入数据可用.检测到流的末尾或者抛出异常前,此方法一直阻塞. 如果 b 为 null,则抛出 NullPointerException. 如果 off 为负,或 len 为负,或 off+len 大于数组 b 的长度,则抛出 IndexOut

java密码学学习整理--对称加密(着重描述3des)

1.对称加密要点 对称加密算法的核心是加密和解密操作使用同一套密钥.加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要.因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题. 2.des(参考自:http://baike.baidu.com/view/878529.htm?from_id=210508&type=syn&fromtitle=DES&fr=aladdin) DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的

算法学习-1 插入排序

算法学习-1  插入排序 一.描述: 比如说我们玩扑克牌,规定每抓一张牌都要保证左边数字最小:抓第一张牌直接放手里就可以,抓第二张时如果比第一张小,则把它放到第一张牌的左边,假如每张抓来的牌放到手中都有固定位置,第一张为A[0],第二张为A[1],第三张为A[2],如果抓的第三张牌比第一张抓来的牌小,则将其放在A[0]处,对应的第二张牌就应该放在A[1],以此类推. 二.java代码实现 public class InsertSort { //排序后的数组 int sorted[]; publi

Java基础学习总结——Java对象的序列化和反序列化

一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中: 2) 在网络上传送对象的字节序列. 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些s

算法学习-1 预备篇

最近开始我的算法学习,打算以<算法>(第4版)为基础来学习.“工欲善其事必先利其器”,作者自己开发了类库应用在书中的程序中,所以必须先在书的配套网站上下载相应的jar包,然后导入到eclipse中去. 首先,要打开书籍的官网http://algs4.cs.princeton.edu/home/,在左侧WEB RESOURCES栏下,单击code,在弹出的页面,会发现一大段中高亮的algs4.jar,单击,然后就开始下载.书中的I/O类都包含在了这个jar包中了. 下面把algs4.jar导入到

深入Java集合学习系列:HashMap的实现原理

参考文献 引用文献:深入Java集合学习系列:HashMap的实现原理,大部分参考这篇博客,只对其中进行稍微修改 自己曾经写过的:Hashmap实现原理 1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的).此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变. 2. HashMap的数据结构: 在ja

Java并发学习之四——操作线程的中断机制

本文是学习网络上的文章时的总结,感谢大家无私的分享. 1.如果线程实现的是由复杂算法分成的一些方法,或者他的方法有递归调用,那么我们可以用更好的机制来控制线程中断.为了这个Java提供了InterruptedException异常.当你检测到程序的中断并在run()方法内捕获,你可以抛这个异常. 2.InterruptedException异常是由一些与并发API相关的Java方法,如sleep()抛出的. 下面以程序解释 package chapter; import java.io.File

java多线程学习--java.util.concurrent

CountDownLatch,api 文档:http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes. 假设我们要打印1-100,最