
算法
文章平均质量分 64
秋夫人
将军赶路不追野兔
展开
-
实时协作编辑的技术:操作转换(Operational Transformation, OT)算法
确保操作的定义明确,包括操作类型、位置和内容。原创 2024-10-13 16:36:22 · 1218 阅读 · 0 评论 -
进程调度算法
选择合适的调度算法需要考虑系统类型、性能需求、公平性等多个因素。在实际系统中,通常会采用多种算法的组合来实现最佳的调度效果。进程调度算法是操作系统用来决定哪个就绪进程应该被分配 CPU 时间的方法。原创 2024-08-27 21:09:10 · 312 阅读 · 0 评论 -
常见哈希函数
选择合适的哈希函数需要根据具体的应用场景和需求来决定。对于需要高安全性的应用,如密码存储和数字签名,应选择如SHA-256或SHA-3这样的加密哈希函数。而对于性能要求高、安全性要求不那么严格的场景,如快速查找和数据校验,可以选择MurmurHash、xxHash等非加密哈希函数。原创 2024-08-31 09:22:17 · 1858 阅读 · 0 评论 -
哈希算法:xxHash
xxHash 是一种非常快速的哈希算法,用于生成非加密哈希值。它由 Yann Collet 设计,旨在提供高速的哈希计算,同时保持良好的分布性和碰撞抵抗能力。xxHash 主要用于哈希表、数据校验、快速数据比较和唯一标识符生成等场景,特别适用于需要处理大量数据的应用。原创 2024-08-31 09:21:53 · 1663 阅读 · 0 评论 -
CRC32
CRC32(循环冗余校验32位)是一种广泛使用的校验码(Checksum)算法,用于检测数据在存储或传输过程中是否发生变化或损坏。CRC32算法通过对数据块进行一系列的位运算,生成一个32位的整数(即CRC值),作为数据的校验码。当数据再次被读取或接收时,可以重新计算CRC值并与原始的CRC值进行比较,以验证数据的完整性。原创 2024-08-31 09:20:37 · 1440 阅读 · 0 评论 -
安全哈希算法:SHA系列
SHA系列提供了一系列加密哈希函数,用于确保数据的安全性和完整性。随着时间的推移,SHA系列经历了多次迭代和改进,以应对不断发展的安全威胁。在选择具体的SHA算法时,应考虑当前的安全建议和应用场景的特定需求。对于新的应用和系统,推荐使用SHA-2或SHA-3,因为它们提供了更高的安全性。原创 2024-08-31 09:16:54 · 723 阅读 · 0 评论 -
高性能哈希函数:CityHash、FarmHash
CityHash 和 FarmHash 都是由 Google 开发的高性能哈希函数库,主要用于处理非加密哈希场景,如哈希表、数据分布、快速数据比较等。它们都是设计用来在64位系统上高效运行,提供了对不同长度输入数据的良好支持,并能产生高质量的哈希值。原创 2024-08-31 09:04:40 · 1231 阅读 · 0 评论 -
加密哈希函数:MD5
MD5曾经是一种广泛使用的加密哈希函数,但由于存在安全漏洞,它不再适用于安全敏感的应用。尽管如此,MD5仍然在一些特定的、对安全要求不高的场景中有其应用价值。对于需要高度安全性的场景,应选择使用更加安全的哈希算法。原创 2024-08-31 09:10:41 · 579 阅读 · 0 评论 -
加密哈希函数:Blake2,Blake3
BLAKE2 和 BLAKE3 都是高性能的加密哈希函数,提供了强大的安全性和多种功能。BLAKE2 适用于需要高速哈希处理的场景,特别是在资源受限的环境中。BLAKE3 则进一步提升了性能,特别是在多核心处理器上,并通过其并行计算能力,成为一个多用途的哈希解决方案,适用于更广泛的应用场景。选择哪一个取决于特定的应用需求、平台特性和性能要求。原创 2024-08-31 09:08:37 · 743 阅读 · 0 评论 -
常用基本算法思想
这些基本算法思想为解决各种复杂问题提供了框架和方法。在实际应用中,往往需要根据具体问题选择合适的算法思想,或者结合多种思想来设计最优解决方案。深入理解这些基本思想对于提高问题解决能力和算法设计能力至关重要。分治法(Divide and Conquer)深度优先搜索(DFS)和广度优先搜索(BFS)分支限界法(Branch and Bound)贪心算法(Greedy Algorithm)回溯法(Backtracking)枚举法(Enumeration)迭代法(Iteration)哈希(Hashing)原创 2024-08-31 08:52:08 · 473 阅读 · 0 评论 -
五十道编程小题目 --- 20 java
【程序20】 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 1.程序分析:请抓住分子与分母的变化规律,分子分母都遵循【斐波那契数列】n = (n-1) + (n-2); n>2;import java.util.Scanner;public class Test20 { //斐波原创 2016-08-25 21:15:10 · 781 阅读 · 0 评论 -
五十道编程小题目 --- 19 打印菱形 java
【程序19】 题目:打印出如下图案(菱形) * *** ***** ******* ***** *** *和图形* *** ****** ******** ****** *** * import java.util.Scanner;public class Test19 { public原创 2016-08-25 20:47:16 · 1896 阅读 · 0 评论 -
五十道编程小题目 --- 17 猴子吃桃子问题 java
【程序17】题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。1.程序分析:采取逆向思维的方法,从第九天往第一天推。public class Test17 { public sta...原创 2016-08-25 19:52:23 · 7535 阅读 · 6 评论 -
五十道编程小题目 --- 14 java
【程序14】 题目:输入某年某月某日,判断这一天是这一年的第几天? 1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,判断闰年import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Cal原创 2016-08-25 19:12:00 · 768 阅读 · 0 评论 -
五十道编程小题目 --- 33 杨辉三角 java
【程序33】 题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 import java.util.Random;public class YanghuiTriangle { public static void main(String[]原创 2016-09-08 17:07:59 · 2153 阅读 · 0 评论 -
五十道编程小题目 --- 13 java
【程序13】 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 扩展:完全平方即用一个整数乘以自己例如1*1,2*2,3*3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。完全平方数是非负数,而一个完全平方数的根有两个。即 i2 即为完全平方数。public class Test13 {原创 2016-08-25 17:51:34 · 880 阅读 · 0 评论 -
五十道编程小题目 --- 24 java
【程序24】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 import java.util.Collections;import java.util.LinkedList;import java.util.Scanner;public class Test24 { public static void test24()原创 2016-08-25 21:44:51 · 748 阅读 · 0 评论 -
五十道编程小题目 --- 25 回文数 java
【程序25】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 public class PalindromicNumber { public static void palindromicNumber(int n){ int a = n%10; //取得个位数 int b = n/10%10; //取得十位数 in原创 2016-08-26 09:55:53 · 1941 阅读 · 0 评论 -
五十道编程小题目 --- 28 八大排序算法 java 00
【程序28】 题目:对10个数进行排序 1.程序分析:八大排序算法扩展:八大排序算法排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。原创 2016-08-26 15:09:13 · 3915 阅读 · 1 评论 -
五十道编程小题目 --- 29 java
【程序29】 题目:求一个3*3矩阵对角线元素之和 1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 import java.util.Random;public class Test29 { public static void main(String[] args) { int[][] arr = createArr(3); S原创 2016-09-07 18:00:29 · 503 阅读 · 0 评论 -
Java中的异或
在java程序里面的异或用法: 相同输出0,不同输出1,例如: System.out.println(1^1); 输出0 System.out.println(1^2);输出3,因为最后2个低位都不一样,所有输出3 异域的概念是相同为0不同为1.如果两个数值异或后的值相同,异或前可能不同。 比如二进制:0010^0001=0011 而0000^0011=0011原创 2016-09-21 13:40:29 · 8293 阅读 · 2 评论 -
Leetcode - java - 206.反转一个单链表 - 图解
题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2-&amp原创 2019-01-17 12:01:08 · 835 阅读 · 0 评论 -
Leetcode - java - 24. 两两交换链表中的节点
题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。解题(1)、用时 4ms/** * Definition for singly-linked list. * ...原创 2019-01-17 14:04:02 · 534 阅读 · 0 评论 -
五十道编程小题目 --- 43 求0—7所能组成的奇数个数(排列组合) java
【程序43】 题目:求0—7所能组成的奇数个数。 算法思想:这个问题其实是一个排列组合的问题,设这个数为sun=a1a2a3a4a5a6a7a8,a1-a8表示这个数的某位的数值,当一个数的最后一位为奇数时,那么这个数一定为奇数,不管前面几位是什么数字。如果最后一位数为偶数,则这个数一定为偶数。a1-a8可以取0-7这个八个数字,首位数字不为0。从该数为一位原创 2016-09-09 17:23:59 · 6994 阅读 · 1 评论 -
五十道编程小题目 --- 12 企业发放的奖金根据利润提成 java
【程序12】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,原创 2016-08-25 17:30:58 · 5555 阅读 · 0 评论 -
五十道编程小题目 --- 11 排列与组合(阶乘) java
【程序11】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 思路:全排列,n个数字,能组成Anm 个互不相同且无重复数字的m位数。即: 扩展:排列的定义:从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个元素按照一定的顺序排成一列,叫原创 2016-08-25 14:26:34 · 1583 阅读 · 0 评论 -
五十道编程小题目 --- 10 反弹的小球 java
【程序10】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高? public class BallFlip { public static void ballFlip(double m, double n){ StringBuilder sb = new StringBuilde原创 2016-08-25 13:04:22 · 4057 阅读 · 2 评论 -
五十道编程小题目 --- 03打印出所有的"水仙花数"java
【程序3】题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 public class WaterFlower { public static void waterFlo原创 2016-08-24 17:51:14 · 1772 阅读 · 0 评论 -
五十道编程小题目 --- 06 最大公约数和最小公倍数 java
【程序6】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:辗除法或相减法。求最小公倍数算法:最小公倍数=两整数的乘积÷最大公约数求最大公约数算法:(1)辗转相除法(2)相除法(1)辗转相除法有两整数a和b:① a%b得余数c② 若c=0,则b即为两数的最大公约数原创 2016-08-24 20:15:57 · 1304 阅读 · 0 评论 -
五十道编程小题目 --- 28 八大排序算法 java 之 03简单选择排序
3. 选择排序—简单选择排序(Simple Selection Sort)基本思想:在要排序的一组数中,选出最小(或者最大)的一个数,用第1个位置的数与剩下的n-1个数进行比较,然后,用第2个位置的数与剩下的n-2个数进行比较,以此类推。简单选择排序的示例: 算法实现:[java] view plain cop原创 2016-09-05 19:02:42 · 744 阅读 · 0 评论 -
java短作业优先调度算法(SJF) ---------> 求平均等待时间
短作业优先调度算法(SJF) 短作业优先调度算法(Short Job First)用于进程调度时又被称为短进程优先调度算法(Short Process First),该算法既可以用于作业调度,又可以用于进程调度。 在作业调度中,该算法每次从后备作业队列中挑选估计服务时间最短的一个或几个作业,将他们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中原创 2016-08-24 10:25:34 · 14463 阅读 · 7 评论 -
五十道编程小题目 --- 00
看到了50道编程小题目,看了一下挺好的,就留下来,大家有时间也做做啊,做好把代码和心得贴在自己博客,大家一块交流啊,别小看这些小题目,做大的系统也是把一个大系统不断的分成一个个小模块做啊,我觉得这个很能锻炼逻辑思维能力,和对面向对象的理解,从题目中抽象出来类,并思考类中字段,方法,这个过程可以收获很多,好了废话不说了,题目如下:【程序1】 题目:古典问题:有一对兔子,从出生后第3个原创 2016-08-24 16:26:07 · 12567 阅读 · 3 评论 -
五十道编程小题目 --- 41 海滩上有一堆桃子,五只猴子来分 java
【程序41】题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?程序分析:桃子总数为total个,(1)第一个猴子分完5份后,每个猴子拿的桃...原创 2016-09-09 16:08:21 · 12029 阅读 · 13 评论 -
五十道编程小题目 --- 40 字符串排序 java
【程序40】 题目:字符串排序。 import java.util.ArrayList;import java.util.HashMap;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test40 { public s原创 2016-09-09 15:12:17 · 1351 阅读 · 0 评论 -
五十道编程小题目 --- 39 java
【程序39】 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/nimport java.util.Scanner;public class Test39 { public static void main(String[] args) { System.ou原创 2016-09-09 13:40:28 · 694 阅读 · 0 评论 -
五十道编程小题目 --- 32 取一个整数a从右端开始的4~7位。 java
【程序32】 题目:取一个整数a从右端开始的4~7位。 程序分析:可以这样考虑: ① 以二进制方式考虑:(1)先使a右移4位。 (2)设置一个低4位全为1,其余全为0的数。可用~(~0(3)将上面二者进行&运算。 ②以十进制考虑: (1).一个五位以上的数a, 除以10000(a/10000) 取商。ublic class Test32 {原创 2016-09-09 13:21:26 · 2225 阅读 · 0 评论 -
五十道编程小题目 --- 37 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子 java
【程序37】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 import java.util.Arrays;import java.util.Scanner;import net.mindview.util.Print;public class Test37 { publi原创 2016-09-09 11:13:39 · 4718 阅读 · 1 评论 -
五十道编程小题目 --- 28 八大排序算法 java 之 01直接插入排序
1.插入排序—直接插入排序(Straight Insertion Sort)基本思想:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。要点:设立哨兵,作为临时存储和判断数组边界之用。直接插入排序示例:如果碰见原创 2016-09-05 19:00:23 · 1263 阅读 · 0 评论 -
五十道编程小题目 --- 28 八大排序算法 java 之 02希尔排序
2. 插入排序—希尔排序(Shell`s Sort)希尔排序是1959 年由D.L.Shell 提出来的,相对直接排序有较大的改进。希尔排序又叫缩小增量排序基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。操作方法:选择一个增量序列t1,t2,…,tk,其中t原创 2016-09-05 19:01:52 · 1078 阅读 · 0 评论 -
五十道编程小题目 --- 09 完数 java
【程序9】 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。 import java.util.ArrayList;import com.sun.tools.apt.Main;public class DivisorAdd { public static void divisorAdd(int n){原创 2016-08-24 22:05:11 · 547 阅读 · 0 评论