
Algorithm
文章平均质量分 72
caiandyong
浮躁的心不会积淀出成功的土壤,清幽的路上风景更美好!
展开
-
Hash
哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。 哈希值是一段数据唯一且极其紧凑的数值表示形式。 如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。 要找到散列为同一个值的两个不同的输入,在计算上是不可能实现的,所以数据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法。原创 2015-07-16 00:12:18 · 696 阅读 · 0 评论 -
计算输入时间的下一秒时间-java实现
计算输入时间的下一秒时间,输入格式如:2016/09/11 12:12:12import java.io.*;import java.text.SimpleDateFormat;import java.util.*;import java.util.logging.SimpleFormatter;public class Main{ public static原创 2016-09-11 00:00:50 · 3871 阅读 · 0 评论 -
kaprekar常数(6174猜想)
6174猜想 :1955年,卡普耶卡(D.R.Kaprekar)研究了对四位数的一种变换:任给出四位数k0,用它的四个数字由大到小重新排列成一个四位数m,再减去它的反序数rev(m),得出数k1=m-rev(m),然后,继续对k1重复上述变换,得数k2.如此进行下去,卡普耶卡发现,无论k0是多大的四位数, 只要四个数字不全相同,最多进行7次上述变换,就会出现四位数6174.例子1:原创 2016-08-03 13:48:04 · 4957 阅读 · 0 评论 -
在二叉树中找出和为某一值的所有路径-java实现
一个小算法,分享一下思路:描述:写一个程序创建一棵二叉树,并按照一定规则,输出二叉树根节点到叶子节点的路径。规则如下:1、从最顶端的根结点,到最下面的叶子节点,计算路径通过的所有节点的和,如果与设置的某一值的相同,那么输出这条路径上的所有节点。2、从根节点遍历树时,请请按照左到右遍历,即优先访问左子树的节点。二叉树创建规则:从上到下一层一层的,按照从左到右的顺序进行原创 2016-08-17 16:13:10 · 3535 阅读 · 0 评论 -
基数排序-java实现
基数排序: 像选择排序、插入排序、快速排序等都是基于两个元素的比较进行排序的。而基数排序无需进行元素比较,基于队列处理就能够达到排序的目的。 基数排序不是基于排序关键字来比较排序项,而是基于排序关键字的结构。对于排序关键字中的每一个数字或字符的每一种可能取值,都会创建一个单独的队列。队列的数目就称为基数。例如:要排序全部由小写字母组成的字符串,则原创 2016-07-12 16:17:56 · 1384 阅读 · 0 评论 -
归并排序-java实现
归并排序:归并排序是一种递归排序算法,通过将列表递归分成两半直到每一个子列表都只含有一个元素,然后将这些子列表按顺序重组,这样就完成了对整个列表的排序。排序策略:1.将列表分成两个大约相等的子列表;2.对每个子列表递归调用自身;3.当整个列表被分成长度都为1的子列表时,归并排序的分解步骤完成;4.递归将两个子列表整合成一个排好序的子列表;5.当所有子列表归并原创 2016-07-11 22:42:18 · 395 阅读 · 0 评论 -
快速排序-java实现
快速排序:将数据列表进行分区,然后对分区进行递归式排序,从而完成对整个列表的排序。排序策略:1.选择一个列表元素作为分区元素;2.分割该列表,使小于分区元素的值位于分区元素左边,大于分区元素的值位于分区元素右边;3.将上述两个步骤递归用于两个分区;4.直到一个分区只含有一个元素,其内在就已经排好序了。例子:初始:305 65 7 90 120 1原创 2016-07-10 17:27:23 · 436 阅读 · 0 评论 -
冒泡排序-java实现
冒泡排序:重复地比较相邻的元素,且在它们不符合顺序时将它们互换,从而完成对某一个列表的排序。排序策略:1.扫描列表且比较相邻两个元素,如果不是按要求的顺序排列则将它们互换,这样就把最大值“冒泡”到最后一个位置,这个位置就是该值在列表中的最终排序好的位置;2.再次扫描列表,冒泡到倒数第二个位置;3.再次扫描列表,冒泡倒数第3,4,...n个位置直到列表排序完成。原创 2016-07-10 16:45:28 · 332 阅读 · 0 评论 -
选择排序-java实现
选择排序:反复地将某一个特定的值放到它在列表中最终已经排好序的位置,从而完成对某一个值的排序。排序策略:1:扫描整个列表找到最小值,将该值与列表的第一个值交换;2:扫描除第一个值以外的列表,找到最小值与列表第二个值交换3:重复第二部,达到将整个列表排序的目的。例子:初始:2 8 5 1 3step1:1 8 5 2 3 (选原创 2016-07-10 16:17:32 · 342 阅读 · 0 评论 -
插入排序-java实现
插入排序:通过反复的将某一个特定的值插入到已经排序好的子集中来完成对列表值的排序。排序策略:1.对列表的头两个值进行排序;2.将第三个值插入到已排序子集的恰当位置;3.继续第2步,直到整个列表排序完成。例子:初始:2 8 5 1 3step1: 2 8 5 1 3 (对表头的2 和 8进行排序)step2: 2 5 8 1 3原创 2016-07-10 11:40:51 · 296 阅读 · 0 评论 -
递归 & 汉诺塔
定义:一个方法可以调用另一个方法来帮助它完成目标。同样,一个方法也可以调用它自身以完成目标。递归:一种允许方法调用该方法自身的编程技术。能否递归的编程的关键在于能否递归的思考。递归体包含两部分:递归部分和非递归部分,非递归部分作为称为基本情形,是递归的统一出口,起到终止递归的作用。如果一个递归没有定义非递归部分,这种递归就是无穷递归,类似于无穷循环,只不过这时是递归定义的内部出原创 2016-05-26 11:13:09 · 460 阅读 · 0 评论 -
蛇形矩阵 java实现
一道面试题,直接上代码和运行结果:/**Created on 2016年4月3日*Copyright 2016 Yong Cai Limited crop. All Rights Reserved**7289***0@qq.com*/package org.cy.com;import java.util.Scanner;public class SheXingJuZhen原创 2016-04-03 23:02:23 · 1490 阅读 · 0 评论 -
Speedup,Scaleup,Sizeup
加速比(Speedup)分析可扩展性(Scaleup)分析规模增长性(Sizeup)分析 并行算法通常包含三种评价的方法,用来评价算法各方面的优劣。1.speedup评测speedup的方法是,保持数据不变,增加计算机的数目。计算机数目为m时的speedup计算方法如下:speedup(m)=在一台机器上面使用的时间 / 在m台机器上面使用的时间。该原创 2015-07-28 23:55:49 · 2045 阅读 · 0 评论 -
最长回文子串
给定一个字符串,计算该字符串的最长回文子串。方法1:枚举所有子串,逐一判断各个子串是否是回文。/* *Created on 2015年12月23日 *Copyright 2015 Yong Cai Limited crop. All Rights Reserved * */public class LongestPalindrome{ publ原创 2015-12-25 16:49:31 · 476 阅读 · 0 评论 -
计算文本相似度-java实现
源代码:Computeclass.java:/** * @author Caiyong * @version 1.0 * * */package pack;import java.text.NumberFormat; import java.util.Locale; public class Computeclass { /* * 计原创 2015-03-13 20:48:49 · 21932 阅读 · 16 评论