数据结构+算法
文章平均质量分 50
关于数据结构+算法的基础知识分享
IT_WEH_coder
IT工程自学开发者
展开
-
国密SM3算法
国密 SM3 算法是中国国家密码管理局发布的一种密码杂凑算法。它能将任意长度的输入数据经过处理后生成固定长度(256 位)的摘要值。SM3 算法具有较高的安全性和效率,主要用于数字签名、消息认证、数据完整性校验等方面,保障信息在存储、传输和处理过程中的安全性和可靠性。原创 2024-10-28 17:09:03 · 662 阅读 · 0 评论 -
SHA-1【安全散列算法】
SHA-1算法是由美国国家安全局(NSA)设计的,于1995年发布。它是MD4、MD5的后继者,MD4、MD5是具有相似功能的算法。SHA-1算法在设计上旨在提供安全性,并抵抗弱碰撞(找到两个具有相同哈希值的不同输入)和强碰撞(找到具有相同哈希值的任意两个输入)的能力。然而,随着时间的推移和计算能力的提升,SHA-1算法被发现存在一些漏洞,例如,2017年研究人员成功实现了SHA-1的碰撞攻击。因此,现在不推荐使用SHA-1算法进行敏感数据的加密,而是使用更强大的安全散列算法,例如SHA-256、SHA-3原创 2024-09-04 00:42:56 · 549 阅读 · 0 评论 -
Java实现加密和解密消息(凯撒密码)
凯撒密码将字母按照一定的偏移量进行加密和解密。在加密时,每个字母的Unicode码值都会增加3(循环加法),而在解密时则会减少3(循环减法)。原创 2024-08-06 18:58:18 · 618 阅读 · 0 评论 -
LeetCode算法题:使二叉树所有路径值相等的最小代价
使二叉树所有路径值相等的最小代价原创 2024-02-29 15:59:16 · 470 阅读 · 0 评论 -
Java--算法(希尔排序)
1 设计思想选择一个增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;按增量序列个数 k,对序列进行 k 趟排序;每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为 1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。2 代码实例public static void sort(int arr[]) { int gap = 1; while (gap < arr.length) {原创 2021-10-13 18:28:05 · 147 阅读 · 2 评论 -
Java--算法(堆排序)
1 设计思想创建一个堆 H[0……n-1];把堆首(最大值)和堆尾互换;把堆的尺寸缩小 1,并调用 shift_down(0),目的是把新的数组顶端数据调整到相应位置;重复步骤 2,直到堆的尺寸为 1。2 关键代码public static void sort(int[] arr) { for (int i = arr.length / 2 - 1; i >= 0; i--) { // 从第一个非叶子结点从下至上,从右至左调整结构 adjustHeap(arr, i, .原创 2021-10-17 20:57:45 · 136 阅读 · 1 评论 -
Java--算法(桶排序)
1 设计思想桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。2 关键代码 public static int[] BucketSort(int[] theArray) { int []Array = new int[100]; int []lastArray = new int[theArray.length]; int m = 0; for(int i=0; i<theArray.length; i++) {.原创 2021-11-04 23:31:47 · 304 阅读 · 2 评论 -
Java--算法(计数排序)
1 设计思想找出待排序的数组中最大和最小的元素;统计数组中每个值为i的元素出现的次数,存入数组C的第i项;对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加);反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1。2 关键代码private static int findMax(int[] array) { int max = array[0]; for (int val : array) { if (val > max).原创 2021-10-15 21:02:57 · 168 阅读 · 1 评论 -
Java--算法(归并排序)
1 设计思想申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;设定两个指针,最初位置分别为两个已经排序序列的起始位置;比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置;重复(步骤 3) 直到某一指针达到序列尾;将另一序列剩下的所有元素直接复制到合并序列尾。2 关键代码public static void sort(int []a) { //申请空间 int []temp=new int[a.length]; //开始排序 s.原创 2021-10-14 22:50:10 · 128 阅读 · 1 评论