![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
半路出家的码农小王
偶尔高产,偶尔懒,全凭灵感
展开
-
Java数组实现一个大根堆
Max-heap(大根堆):1.是完全二叉树2.父节点的值大于或等于子节点的值代码:public static class MyMaxHeap { private int[] heap; private final int limit; private int heapSize; public MyMaxHeap(int limit) { heap = new int[limit]; .原创 2022-04-26 12:00:45 · 455 阅读 · 1 评论 -
算法归并排序解决小和问题,时间复杂度O(nlog2n)
在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。举例:[1,4,5,3,7]1,左边比它小数没有4,左边比它小数:15,左边比它小的数:1,43,左边比它小的数:17,左边比它小的数:1,4,5,3小和为:20代码实现: public static void main(String[] args) { int[] arr = new int[]{1, 4, 5, 3, 7}; int sum = smallSum(原创 2022-04-15 21:15:14 · 413 阅读 · 0 评论 -
算法:归并排序两种实现方式:递归和非递归
递归方式:/** * 迭代方式排序 */ public static void mergeSort1(int[] arr) { if (arr == null || arr.length < 2) { return; } // 流程处理 process(arr, 0, arr.length - 1); } public static void process(i原创 2022-04-13 21:25:18 · 379 阅读 · 0 评论 -
算法题2:手写单链表双链表反转
public static class Node { public int value; public Node next; public Node(int data) { value = data; } } public static class DoubleNode { public int value; public DoubleNode last; ..原创 2022-03-17 23:24:38 · 106 阅读 · 1 评论 -
异或运算性质,不用额外空间交换两个值
异或运算又称为无进位相加。相同为0,不用为1有两个性质:1. 0^ N=N2. N^N=0异或运算满足交换律和结合律原创 2022-03-13 22:19:14 · 492 阅读 · 1 评论 -
算法题1:一个数组中1种数出现K次,其他的都出现M次,M>1,K<M,找到出现的K次的数,要求空间复杂度为O(1)
package com.yypt.algorithm.class01;import java.util.Arrays;import java.util.HashMap;import java.util.HashSet;/** * 一个数组中1种数出现K次,其他的都出现你M次,M>1,K<M,找到出现的K次的数,要求空间复杂度为O(1) */public class Code08_KM { public static int onlyKTimes(int[] arr, .原创 2022-03-13 12:11:55 · 1737 阅读 · 1 评论 -
Java 将十进制转换成二进制代码演示
package com.yypt.algorithm.class01;/** * 将int十进制转成二进制 */public class ChgDec2Bin { public static void main(String[] args) { System.out.println(chgDec2Bin(98)); } public static StringBuilder chgDec2Bin(int num) { StringBuild.原创 2022-03-10 23:32:25 · 580 阅读 · 1 评论 -
国密算法(SM1,SM2,SM3,SM4)和国际算法对应关系
加密领域主要有国际算法和国密算法两种体系。国密算法是国家密码局认定的国产密码算法。国际算法是由美国安全局发布的算法。由于国密算法安全性高等一系列原因。国内的银行和支付机构都推荐使用国密算法。对比如下国密与国际密对应关系 国密 国际密 对称加密 SM1 AES(Advanced Encryption Standard) 非对称加密 SM2 RSA(Ron Rivest、Adi Shamir、Leonard Adleman)三人姓氏首字母拼...原创 2021-11-13 15:26:08 · 15199 阅读 · 2 评论 -
位运算 左移 带符号右移 无符号右移 总结
目录概览主方法与(&)或(|)异或(^)非(~)左移(<<)右移概览符号 描述 运算规则 & 与 两个位都为1时,结果才为1(同1为1) | 或 两个位都为0时,结果才为0(有1为1) ^ 异或 两个位相同为0,不同为1 ~ 取反(非) 0变1,1变0 << 左移 各二进位全部左移若干位,高位丢弃,低位补0 >>原创 2021-11-08 22:03:10 · 734 阅读 · 1 评论 -
手写简单对数器
作用:在大量数据验证下校验算法是否正确package com.yypt.algorithm.main;import com.yypt.algorithm.sort.*;import com.yypt.algorithm.utils.SortUtils;import java.util.Arrays;import java.util.Scanner;public class main { public static void main(String[] args) { .原创 2021-11-04 21:19:38 · 83 阅读 · 0 评论 -
排序算法四:归并排序(Merge Sort)
分治(分而治之)把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。3.依次按照递归的返回顺序,不断地合并排好序的子数组,直到最后把整个数组的顺序排好。2.一直递归地把子数组划分成更小的子数组,直到子数组里面只有一个元素。时间复杂度O(n*logn)1.把数组从中间划分成两个子数组;.........原创 2022-07-28 22:28:42 · 287 阅读 · 0 评论 -
排序算法三:插入排序(InsertSort)
原理:从第二个元素开始和前面的元素比较,如果小于前面的元素则交换位置特点:时间复杂度O(n^2)空间复杂度O(1) 样本小且基本有序的时候效率比较高。需要用到简单排序时候,可以选择插入排序代码package com.yypt.algorithm.sort;import com.yypt.algorithm.utils.SortUtils;public class InsertSort { public......原创 2021-11-04 21:42:24 · 160 阅读 · 1 评论 -
排序算法二:冒泡排序(BubbleSort)
原理:元素两两比较,把较大的数移到后面特点:时间复杂度O(n^2)空间复杂度O(1)稳定 基本不用,太慢代码public static void sort(int[] nums) { System.out.println("Bubble.........."); for (int i = nums.length - 1; i > 0; i--) { ......原创 2021-11-04 21:00:25 · 92 阅读 · 0 评论 -
排序算法一:选择排序(SelectionSort)
原理:1.在未排序的元素中找到最小的元素放到排序的起始位置2.在剩余的元素中找到最小元素放到已排序的序列末尾3.重复第2步,直到排序完毕特点: 时间复杂度O(n^2) 空间复杂度O(1) 不稳定 最简单但是最没用的排序算法,没有优化空间代码 public static void sort(int[] nums) { System.out.println("selection........"); for (int i =......原创 2021-11-04 20:51:41 · 130 阅读 · 0 评论