
算法学习
water-之
悟已往之不谏,知来者之可追
展开
-
滑动窗口思想初识
【代码】滑动窗口思想初识。原创 2023-04-13 16:56:38 · 141 阅读 · 0 评论 -
算法第六天+数据库练习-三表合一
二分法:package 二分;public class test1 { /** * * 暴力对数器 */ public static boolean dui(int[] sortArr, int num){ for (int cur : sortArr){ if (cur == num){ return true; } }原创 2022-05-25 12:20:20 · 230 阅读 · 0 评论 -
算法第五天-01的概率问题+mysql复习
01由不等概率转变为等概率:package Random.随机函数;/** * 不等概率的01----->等概率01 */public class Test2 { public static int x(){ return Math.random() < 0.84? 0 : 1; } /** * 等概率的01 先判断一次,ans要是是0,在判断一次,要是还是0,返回0,要是1就重来一次,同理1也这样,01就是等概率原创 2022-05-24 15:50:24 · 258 阅读 · 0 评论 -
算法第四天:等概率随机数+数据库复习:Group by
等概率随机数实现:现在我们需要得到使用一个函数f1,这个函数可以等概率返回1-5,在只可以使用f1的情况下我们将f1如何改造成返回1-7这个函数呢?1:首先,我们先将1-5转化为0和1,那就是,f1函数返回值<3就返回0,等于三就重新走一遍程序,>3就返回1:这就是新的函数f(2) */ public static int f1(){ return (int)(Math.random()*5)+1; //等概率1-5 }//原创 2022-05-23 16:36:32 · 258 阅读 · 0 评论 -
算法第三天:插入排序+Mysql练习第三天
插入排序package 排序.插入排序;public class InsertSort { public static void insertSort(int[] arr){ if ( arr == null || arr.length <2 ){ return; }// 0~0 :已经完成// 0~1// 0~2// 0~3原创 2022-05-20 18:11:12 · 473 阅读 · 0 评论 -
顺序查找(未完)
怎样实现顺序查找?首先说一下最简单的方法:顺序查找所谓顺序查找也就是在一个数组中一个一个按照顺序去查找他,那么就一个for循环就可以实现: public static int search(int[] a,int key){ for (int i = 0; i <a.length; i++) { if (a[i] == key) { return i; } } r原创 2021-11-13 12:39:34 · 364 阅读 · 0 评论 -
程序逻辑与算法完结(心得篇)(
首先说一下自己的一些思考吧,最近边复习考试边学习有很多东西没有及时记录下来,今天考完试正好来回忆一下:首先,自己对于Comparable接口作用的感想,最近学习了很多排序算法,发现其中很多排序算法都是用到了一个固定的API就是你会发现他使用的次数最多然后我还有一个疑惑就是这个Comparable接口,第一次接触,很好奇他是干什么用的,通过查找资料发现,这个接口其实就是sort方法的本质,我们在使用sort方法然后点击进去以后查看源码就会发现这个public final class Stringim原创 2021-11-07 22:55:21 · 1550 阅读 · 3 评论 -
java实现单链表的增删改
具体思路讲解:有的链表有head这个头节点有的没有具体看实际,然后它分为data域和next域,150指向a1然后a1下一个域是110就指向a2.小节:(1)链表是以结点的方式来存储:链式存储(2)每一个节点包含data域next域;指向下一个节点(3)如上图:发现链表各个节点不一定是连续存储的(4)链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定上图只是逻辑结构,a1和a2不一定存储挨着,只是指针指向。head节点:不存在具体的数据,只是表示单链表的头添加(创建):(原创 2021-11-06 10:17:34 · 410 阅读 · 0 评论 -
快速排序算法学习
快速排序原理:快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列package 快速排序;import java.util.Arrays;/** * @author ${范涛之} * @Description * @create 2021-11-05 19:21 */pu原创 2021-11-05 23:42:59 · 152 阅读 · 0 评论 -
冒泡排序+插入排序(未完)
让最大的元素到最后的位置,第二大的到到倒数第二个位置,依次重复,把所有的相邻元素都比较一次首先我们需要将这三个方法写好:package 冒泡排序;/** * @author ${范涛之} * @Description * @create 2021-11-04 18:44 */public class Bubble { /** * 对数组a中的元素进行排序 */ public static void sort(Comparable[] a){ .原创 2021-11-04 22:45:06 · 189 阅读 · 0 评论 -
程序与逻辑算法学习03
java组合模式:树形结构:用递归打印出下面的树形结构(不能硬编码,提示:先定义出树型数据结构):package 树形结构;/** * @author ${范涛之} * @Description * @create 2021-11-04 8:18 */import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.ut原创 2021-11-04 14:52:08 · 473 阅读 · 1 评论 -
归并排序理解:二分法对数组排序
首先上图:下面这个图就是,一开始分成了左右两部分,左边是4578,右边是1236,然后分别拿左右两部分的第一个数字进行比较,发现右边的的1小于左边的4,然后右边部分指针右移一个单位,变成了2去和左边的4比较大小,这样以此类推…0:我们一开始将左边的第一个数字用i来指向,右边第一个数字用j来指向,那么我们可以一开始定义一个方法 /** * @arr 排序的原始数组 * @param left 左边有序序列的初始索引 * @param mid 中间索引 *原创 2021-11-04 01:21:36 · 416 阅读 · 1 评论 -
计算机发展史0-20
0:计算机如今已经是人类不可或缺的一部分1:晶体管:0于1构建逻辑门(1)最早的算盘出现,计算机的鼻祖(2)莱布尼兹乘法器的出现(1694年)(3)分差机的构造(4)打孔机:人口普查2:世界最大的计算机:哈弗马克1号(继电器)原始机器总是飞进飞蛾,所谓的bug热电子管:可以发射电子3:晶体管做逻辑门与或非,异或的出现4:进制转换ASCLL码的出现5:ALU的诞生6:简单存储*(寄存器)7:CPU的时代指令的诞生第一个电脑程序诞生:取指令->解码->执行8:原创 2021-10-21 13:00:16 · 224 阅读 · 0 评论 -
计算机发展史31-40
31:网络安全机密性,完整性,可用性威胁模型 增加PIN码生物特征(有时失效)系统安全性的一个秘诀是“安全内核”,或者可信任计算基础 ,保证安全的最小操纵软件集32:黑客入侵计算机系统网络钓鱼 电子邮件解决密码输入错误次数过多自动锁定的黑客方法:NAND镜像新的可利用的错误,软件无法识别,称为零日漏洞33:密码术来自密码和图形,大致翻译为写秘密,将纯文本化为密文凯撒密码,根据某种转换方式替换替换密码Anigma加密机最后一层加密回路可以双向流动,加密解密相同配置但是字母原创 2021-10-20 17:08:02 · 1461 阅读 · 0 评论 -
计算机发展史26-30
26:可视化计算机诞生(Macintosh)主流的图形用户界面或GUI闻名1964年恩格尔巴特与比尔-英吉利合作,制作的第一台计算机鼠标苹果公司第一款具有图形界面和鼠标的产品是Apple Lisa(1983)27:3D计算机图形学扫描线渲染28:...原创 2021-10-19 21:05:11 · 717 阅读 · 0 评论 -
计算机原理以及进化
21: 为了存储可以压缩数据(视频+音频)视频:(1)举例:吃豆人,一个4*4的像素矩阵图像通常存储为一串像素值同样只混合255红色和255绿色,会得到黄色图像有16个像素,每个像素占三个字节===48个字节(2)怎样压缩? (游程编码)也就是利用文件中经常存在相同的值,比图糖豆人图片有七个连续黄色像素 , 我们就可以插入一个额外字节表示有连续七个黄色像素然后删除后面的无效数据为了格式一致,我们要在像素前面写长度(3)霍夫曼树:(字典编码)数字代表出现频率使用01标注生成字典原创 2021-10-19 15:14:01 · 374 阅读 · 0 评论 -
算法:02-常见算法复杂度
1:普通复杂度:O(n)级别遍历一个n*n的二维数组:O(n²) for (int i = 0; i <n; i++) { for (int j = 0; j <n; j++) { } }遍历:A[i][j]左边的n表示二维数组某一个维度是n,右边n代表的是元素总数为n2:对数复杂度3:√n型复杂度4:长度为n的二进制数字:O(2 )长度为原创 2021-09-05 16:54:40 · 617 阅读 · 0 评论 -
算法:01-复杂度分析
复杂度分析:表示算法的性能示例:线性查找private LinearSearch(){} public static <E> int search(E[] data, E target){ for (int i = 0; i <data.length; i++) { if (data[i].equals(target)) { return i; }原创 2021-09-05 16:15:58 · 295 阅读 · 1 评论 -
算法基础:线性查找发
LineSearch类public class LinearSearch{ private LinearSearch(){} public static <E> int search(E[] data, E target){ for (int i = 0; i <data.length; i++) { if (data[i].equals(target)) { return i;原创 2021-09-05 15:25:29 · 231 阅读 · 1 评论