![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构算法学习
文章平均质量分 53
数据结构算法学习
qq_40178533
这个作者很懒,什么都没留下…
展开
-
分布式事务原理
分布式事务概念:一个应用系统需要拆分成两个子系统,其中一个系统对应一个库,此时也需要用到分布式事务。RabbtiMQ过程:RabbitMQ 分为:生产者,消费者,Broker中心。生产者:1.生产者和Broker建立连接,建立Channel通道2.生成者发送消息到MQ,即到Broker中心(交换机+队列)3.交换机将消息发到指定的队列上消费者:1.消费者和Broker建立连接,建立Channel通道2.消费者监听指定的队列3.队列上有消息,则把消息发送到消费者RabbitMQ类型原创 2021-07-29 20:26:40 · 108 阅读 · 0 评论 -
冒泡排序的两种优化算法
冒泡排序定义:通俗来说,就是简单的比较相邻的元素,使得元素有序。package huawei;/** * @author zhang kun * @Classname Sort * @Description TODO * @Date 2021/7/2 19:18 */public class Sort { public static void main(String[] args) { int[] arr = {2,34,1,3,5,7,4}; i原创 2021-07-02 19:37:33 · 104 阅读 · 0 评论 -
归并排序
算法思想归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。并排序我们采用递归去实现,分阶段可以理解为就是递归拆分子序列的过程,递归深度为log2n。合并相邻有序子序列来看看治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7,8]和[转载 2021-05-18 10:25:57 · 60 阅读 · 0 评论 -
快速排序原理探究
非常魔性的漫画方法其实很简单:分别从初始序列“6 1 2 7 9 3 4 5 10 8”两端开始“探测”。先从右往左找一个小于6的数,再从左往右找一个大于6的数,然后交换他们。这里可以用两个变量i和j,分别指向序列最左边和最右边。我们为这两个变量起个好听的名字“哨兵i”和“哨兵j”。刚开始的时候让哨兵i指向序列的最左边(即i=1),指向数字6。让哨兵j指向序列的最右边(即=10),指向数字。首先哨兵j开始出动。因为此处设置的基准数是最左边的数,所以需要让哨兵j先出动,这一点非常重要(请自己想一想为什么原创 2021-05-18 10:13:17 · 62 阅读 · 0 评论 -
Java中的队列和栈相关总结
java 栈类的用法java中有封装好的类,可以直接调用:Stack:1–>public Stack()创建一个空堆栈2–>public boolean empty()测试堆栈是否为空;3–>public E pop()移除堆栈顶部的对象,并作为此函数的值返回该对象。4–>public E push(E item)把项压入堆栈顶部5–>public E peek()查看堆栈顶部的对象,但不从堆栈中移除它。6–>public boolean empty()测原创 2021-02-26 09:42:18 · 125 阅读 · 0 评论 -
全国高校计算机能力挑战赛Java试题(八)
16.某星球存在两种生物,A种生物有1个头6条腿,B种生物有3个头4条腿。来自地球的太空船刚刚在该星球降落,突然发现一大群这两种生物组成的队伍,由于时间紧,只数了头的数量和腿的数量,请帮助宇航员分析A、B两种生物各有多少个。输入说明:头的数量L腿的数量Z,(L,Z<=100000);输出说明:A生物的数量B生物的数量(两个整数用一个空格隔开);输入样例:10 32输出样例:42import java.util.Scanner; public class Main1 { public原创 2020-11-27 14:19:53 · 447 阅读 · 1 评论 -
全国高校计算机能力挑战赛Java试题(七)
20.给定一个只包含0-9、+’、’的合法数学表达式(长度<1000),规定加号‘+”的优先级高于乘号”,请输出计算结果。输入说明:合法的数学表达式输出说明:输出表达式的计算结果输入样例:123+122输出样例:360package solution; import java.util.ArrayList;import java.util.Arrays;import java.util.Scanner; public class Main5 { public static原创 2020-11-27 14:17:29 · 745 阅读 · 1 评论 -
为什么类之间只能单继承不能多继承,接口之间可以多继承,类与接口之间可以多实现
类与类的关系继承关系,只能单继承,但是可以多层继承原因:子类如果能继承多个父类,如果多个父类中存在同名属性或者方法,子类继承时将不能判断继承自哪个父类的属性和方法,所以类之间不能多继承。类与接口的关系实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。原因 :接口的抽象方法没有具体的方法体,多接口即使拥有同名的抽象方法,类在实现时只需重写一个方法即可。接口与接口的关系继承关系,可以单继承,也可以多继承原因:口中的方法均为抽象方法,没有具体实现的方法体,所以在多继承的情况原创 2020-11-25 11:00:27 · 2599 阅读 · 1 评论 -
震惊!静态方法中不可以直接访问非静态方法
static的访问特点非静态的成员方法能访问静态的成员变量能访问非静态的成员变量能访问静态的成员方法能访问非静态的成员方法静态的成员方法能访问静态的成员变量能访问静态的成员方法总结成一句话就是:静态成员方法只能访问静态成员具体原因:静态方法是属于类的,即静态方法是随着类的加载而加载的,在加载类时,程序就会为静态方法分配内存非静态方法是属于对象的,对象是在类加载之后创建的静态方法先于对象存在,当你创建一个对象时,程序为其在堆中分配内存,一般是通过this指针来指向该对象原创 2020-11-25 10:28:52 · 510 阅读 · 0 评论 -
全国高校计算机能力挑战赛Java试题(六)
对于给出的长度为N(N<1000)的正整数数组,满足连续3个元素均为合数的区间称为3合数区间,计算该数组中3合数区间的个数。输入说明:第一行,数组中元素个数N,第二行,N个正整数,用空格隔开。输出说明:3合数区间的个数输入样例:7 6 8 4 9 7 5 8输出样例:2package solution;import java.util.Scanner;public class Main2 { public static void main(String[] args) {原创 2020-11-23 21:11:21 · 671 阅读 · 0 评论 -
全国高校计算机能力挑战赛Java试题(五)
1.输入个数N,求出1-N之间所有立方数package zzhaosheng;import java.util.Scanner;public class jisuanlifangshu {public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个N数,计算0-N之间的立方数的个数"); int N = sc.nextInt(); int nu转载 2020-11-23 20:41:14 · 311 阅读 · 0 评论 -
全国高校计算机能力挑战赛Java试题(四)
仓库新进了几批物资,只知道每批物资的数量和单价,编写程序,按照每种物资的总价值,从高到低次序输出。输入说明:第一行一个整数N 表明物资的批次数量第2-N+1行,每批物资的数量和单价,类别用A-Z区分。输入样例:5A 5 10B 3 2A 5 8B 3 3C 10 3输出样例:A 90C 30B 15package zzhaosheng;import java.util.ArrayList;import java.util.Collections;import java.ut转载 2020-11-23 20:39:34 · 245 阅读 · 0 评论 -
全国大学生高校计算机能力挑战赛Java试题(三)
N个数组成数组,K个数组成一个区间,一个区间所有素数的和称为SK,输出每个区间所有素数的和package zzhaosheng;import java.util.ArrayList;import java.util.Scanner;/* * N个数组成数组,K个数组成一个区间,一个区间所有素数的和称为SK,输出每个区间所有素数的和 * 输入 第一行 两个值 一个N 一个K * 第二行 N个数 */public class jisuanSK {public static void ma原创 2020-11-23 20:38:37 · 435 阅读 · 0 评论 -
全国高校计算机能力挑战赛Java试题(二)
字母连连看,输入一个全为小写字母的字符串,如果字符串中有两个相同的字母就消除,不断重复操作,直到该字符串不能消除为止,如果完全消除就输出YES,如果未完全消除就输出余下的字符package zzhaosheng;import java.util.ArrayList;import java.util.Scanner;public class zimuxiaochu {public static void main(String[] args) { Scanner sc = new Scanne转载 2020-11-23 20:37:32 · 212 阅读 · 0 评论 -
全国大学生计算机能力挑战赛Java题(一)
全国大学生计算机能力挑战赛Java题(一)输入三门课成绩,第一门课超过60,第二门超过65,第三门超过70,总分超过210,通过输出pass,不通过输出falseScanner sc = new Scanner(System.in); System.out.println("依次输入三门课成绩"); ArrayList<Integer> list = new ArrayList<>();...转载 2020-11-23 20:32:09 · 1285 阅读 · 0 评论 -
ArrayList和linkedList的区别
1. ArrayArray(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大,因为这需要重排数组中的所有数据, (因为删除数据以后, 需要把后面所有的数据前移)缺点: 数组初始化必须指定初始化的长度, 否则报错例如:int[] a = new int[4];//推介使用int[] 这种方式初始化int c[] = {23,43,56,78};//长度:4,索引范围:[0,3]2. List转载 2020-11-14 19:57:40 · 100 阅读 · 0 评论 -
List和ArrayList的区别到底是什么
List是一个接口,而ListArray是一个类。ListArray继承并实现了List。所以List不能被构造,但可以向上面那样为List创建一个引用,而ListArray就可以被构造。List list; //正确 list=null;List list=new List(); // 是错误的用法List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是Lis原创 2020-11-14 17:29:17 · 214 阅读 · 0 评论 -
Java中ArrayList的使用教程
1.ArrayList是什么提供一种存储空间可变的存储模型,存储的数据容量可以发生改变,底层是数组实现的,长度可以变化。2.ArrayList类常用方法方法说明public ArrayList()创建一个空的集合对象public boolean remove(Object o)删除指定的元素,返回删除是否成功public E remove(int index)删除指定索引处的元素,返回被删除的元素public E set(int index,E elemen原创 2020-10-24 20:26:13 · 266 阅读 · 0 评论 -
java中栈的管理
栈的定义栈是一种特殊的线性表,只能在一端进行操作往栈中添加元素的操作,一般叫做push,入栈从栈中移除元素的操作,一般叫做pop,出栈(只能移除栈顶元素,也叫做:弹出栈顶元素)后进先出的原则,Last In First Out,LIFO栈的接口设计使用前面的ArrayList的作为包,使用组合作为基础。package chapter_03栈;import java.util.ArrayList;import java.util.List;public class Stack原创 2020-06-21 09:02:01 · 133 阅读 · 0 评论 -
Java 中的动态数组
数组数组是一种顺序存储的线性表,所有元素的内存地址是连续的。动态数组(Dynamic Array)接口设计代码私有变量成员/** * 元素的数量 */ private int size; /** * 所有的元素 */ private E[] elements; private static final int DEFAULT_CAPACITY = 10; private static final int ELEMENT_NOT_FOUND = -1; 构造方原创 2020-06-14 20:40:11 · 305 阅读 · 0 评论 -
算法的复杂度总结
算法算法是用于解决特定问题的一系列的执行步骤。评判算法一般从以下维度来评估算法的优劣正确性、可读性、健壮性(对不合理输入的反应能力和处理能力)时间复杂度(time complexity):估算程序指令的执行次数(执行时间)空间复杂度(space complexity):估算所需占用的存储空间大O表示法忽略常数、系数、低阶9 >> O(1)2n + 3 >> O(n)n2 + 2n + 6 >> O(n2)4n3 + 3n2 + 22n + 1原创 2020-06-14 20:29:34 · 185 阅读 · 0 评论