- 博客(95)
- 收藏
- 关注
原创 算法_逆序对的数量
求逆序对的算法是利用了归并排序的思想,在归并排序的过程中会将序列分为两部分,此时逆序对可以分为现在假设我们在归并排序的时候写的函数mergeSort(int[] arr, int l, int r)可以返回l到r区间中逆序对数量。那么s1=mergeSort(a, l, mid),s2=mergeSort(a, mid + 1, r);(s1是两个数都在左区间的逆序对个数,s2是两个数都在右区间的逆序对个数),s3(一个在左,一个在右,但显然要构成逆序对需要)很显然没有直观的答案。那么核心问题就在于。
2024-02-26 17:56:11
331
原创 记录自己算法复习过程的一些差错
2、设置的分界点 应该是 数组中的值,而不是左右边界的索引值。在创建新数组时,只写了 Scanner 输入,并未赋值。1、交换顺序的代码出错。
2024-02-23 14:52:25
295
原创 算法_归并排序
给定你一个长度为 n 的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。快排和归并排序的时间复杂度都是 n * log2 (n)分治(找分界点 递归排序)快排是找一个 数组中的一个 值进行排序而归并排序是以为分界点1、确定分界点,以中间点((left + right) / 2 是左右边界下标索引的平均值)划分排序左边 和 右边。(递归完后,左右两边就会变为有序的列表)3、,将两个有序的数组 归并为 一个有序的数组我们使用。
2024-02-22 17:26:16
865
原创 算法_快速选择算法求出第k小的数
给定一个长度为 n𝑛 的整数数列,以及一个整数 k𝑘,请用快速选择算法求出数列从小到大排序后的第 k 个数。若k 小于等于 sl ,说明 第k小的数在左区间,因此递归左区间。Sl是左区间 数据的数量, Sl = j - l + 1。否则,说明第k小的数在有区间,因此递归右区间。在哪个区间就递归哪个区间,以此减少时间复杂度。
2024-02-21 15:33:45
320
原创 算法_快排
开始判断指针j ,指针j所对应的数 若 >= x的话 则说明该数应该待在右边区间,所以不移动数字,指针右移,继续判断下一个数字,直到对应的数字 <=x,则不动。(3)此时,指针i所对应的数>=x,本应在右边区间,而指针j所对应的数 <=x,本应在左边区间。(2)扫描数组q[l ~ r] 的每个数q[i], 若q[i] <= x,则归入a[] ,若q[i] >= x,则归入b[](3)将a[]中的数放入 数组q[l ~ r] ,再将b[]中的数 放入数组q[l ~ r]x = q[(l+r+1)/2];
2024-02-19 17:02:23
366
原创 java注解
java注解(Annotation)[ˌ ænəˈ teɪʃn],又称java标注,也被称为元数据(关于数据的数据,描述数据的数据)(Metadata)[ˈ metədeɪtə],可用于修饰或者解释包、类、方法、属性、构造器,局部变量等数据信息。java注解和注释一样,不会影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息。在javaSE中,注解的功能比较单一,例如标记过时的功能,忽略警告等等。
2024-01-31 12:19:39
797
原创 Java枚举
枚举全称Enumeration [ˌ ɪnuːməˈ reɪʃn],简称Enum或者enum。枚举是一组常量的集合。枚举类属于一种特殊的类,里面只包含一组有限的特定的对象。枚举的出现可以解决上述的问题。步骤 :①将自定义类的构造器私有化,使其不能被随随便便地new出对象。②取消类中提供的setXxx方法,仅保留getXxx方法,因为“枚举类”对象仅可读,不能随便修改对于对象的描述。③直接在自定义类中创建一组对象,使用的组合实现底层优化。并且要对外暴露这组对象,因此要添加public修饰符。
2024-01-18 17:10:07
9395
1
原创 java内部类(javase重难点)
1.概述:当一个类的内部又完整地嵌套了另一个类时,被嵌套于内部的“内核”我们称之为“内部类”(inner class);而包含该内部类的“外壳”我们称之为“外部类”(outer class)。内部类最大的特点就是可以直接访问私有属性,并且可以体现出类与类之间的包含关系。PS : 底层源码中往往含有大量的内部类。内部类是类的第五大成员,其他四个分别是属性,方法,构造器,代码块。2.概念图。
2024-01-17 22:00:54
966
原创 java接口
接口技术用于描述类具有什么功能,但并不给出具体实现,当某个类要使用接口时,再去实现接口中的这些方法。类需要遵从接口中描述的统一规则进行定义,所以,接口是对外提供的一组规则,标准。接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。①定义接口要用到关键字interface,格式如下 :interface接口名 {②类和接口的关系不再是继承,而是实现关系,用implements关键字表示。如下 :class类名implements接口名 {
2024-01-17 15:58:02
2355
原创 java的抽象类
我们知道,类用来模拟现实事物。一个类可以模拟一类事物,而某个类的一个实例化对象可以模拟某个属于该类的具体的事物。类中描绘了该类所有对象共同的特性,当一个类中给出的信息足够全面时,我们就可以实例化该类;比方说,在Dog类中定义了name,age,fur_color,sex等属性,以及habit,eat等行为时,我们就可以创建一个Dog类对象,来模拟某个具体的Dog,比如你家的宠物狗,或者是神犬小七等。但是,
2024-01-16 17:01:08
1004
原创 java单例设计模式
设计模式是在大量的实践中总结和理论化之后优的代码结构、编程风格、以及解决问题的思考方式。经典的设计模式共23种创建型模式,共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。单例例模式便是创建型设计模式的一种,它确保某一个类在系统中。
2024-01-15 22:38:46
358
原创 java中的代码块
代码块又称为初始化块,属于类中的成员[即是类的一部分],类似于方法(可以看作只有方法体的方法),讲逻辑语句封装在方法体 中,通过{ }包围起来。但和方法不同,没有方法名,没有返回值,没有参数,只有方法体,而且不用通过对象或者类显式调用,而是加载类时,或创建对象时隐式调用。/*** 创建一个对象时,在一个类调用顺序是:* ①调用静态代码块和静态属性初始化(注意:静态代码块和静态属性初始化调用的优先级一样,* 如果有多个静态代码块和多个静态变量初始化,按照定义顺序调用);
2024-01-15 21:21:00
869
原创 java的main方法语法
4、因为main() 方法是静态的,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员,这种情况,我们在之前的例子中多次碰到。3、main方法接收一个String类型的数组参数,该数组中保存执行Java命令时传递给所运行的类的参数。1、Java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public。2、Java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static的。方法体:来体现方法的功能。
2024-01-15 15:20:59
349
原创 java类变量(static变量)
当static关键字修饰成员变量时,该变量称为类变量,也叫做静态变量静态属性。该类的每个对象都共享同一个类变量的值。任何一个该类的对象都可以访问到同一个值;修改该类变量值的时候,修改的也是同一个值;也可以在不创建该类的对象的情况下对类变量进行操作。静态变量的访问修饰符的访问权限和范围和普通属性是一样的// 定义语法:访问修饰符 static 数据类型 变量名;// 推荐使用static 访问修饰符 数据类型 变量名;// 举例:// 访问语法:类名.静态变量名 // 推荐使用。
2024-01-15 14:54:29
1720
1
原创 存取款、利率计算
/2、扩展BankAccount,新类SavingAccount每个月都有利息产生(调用earnMonthlyInterest方法实现)//1、要求在原业务基础上扩展 新类 CheckingAccount,对每次存款和取款 都收取1美元的手续费。// 并且有每月三次免手续费的存取款,在earnMonthlyInterest方法中重置交易次数。
2024-01-11 17:01:20
413
原创 java属性调用 ,程序输出题
输出结果 Test Demo Rose Jack John Jack。new Demo("john")调用了父类的有参构造器。因为属性没有动态绑定机制,哪里声明就在哪里使用。
2024-01-11 16:18:07
381
原创 编写老师类 * 1、要求有属性 name,age,职称post,基本工资salary * 2、编写方法 introduce() 实现输出一个教师的信息 * 3、编写教师类的三个子类:教授类、
【代码】编写老师类 * 1、要求有属性 name,age,职称post,基本工资salary * 2、编写方法 introduce() 实现输出一个教师的信息 * 3、编写教师类的三个子类:教授类、
2024-01-11 14:31:52
477
原创 //定义一个Person类,{name,age,job},初始化Person对象数组,并按照age从大到小排序(使用冒泡排序)
【代码】//定义一个Person类,{name,age,job},初始化Person对象数组,并按照age从大到小排序(使用冒泡排序)
2024-01-11 14:25:06
428
原创 用java写一个零钱通项目
分析零钱通一共就两个业务,一个是收益入账,一个是消费。这里没有采用数组的方式,因为还没学习数组的动态扩容。可以完成收益入账、消费、查看明细、退出系统等功能。要学会检验条件时,这种找不正确条件的 编程思维。先使用过程编程,后面改成OOP版本。
2024-01-08 23:38:32
601
原创 java中的Object类详解
3)判断p1.equals(p2) p1并未重写equals类,所以用的是Object类的equals方法,判断方法是this == obj,因为p1为引用数据类型,所以判断的是地址,所以false。2)判断p1.name.equals(p2.name) name为String类,String类的equals方法(重写过)为判断内容是否一样所以true。1)判断p1 == p2 ,p1p2为引用数据类型, ==运算符在判断引用数据类型时,判断的是地址,所以为false。equals和==的区别(面试)
2024-01-08 16:30:03
903
原创 Idea 如何查看 Jdk源码
如果没有的话点击菜单File --> Project Structure --> SDKs --> Sourcepath然后点击右侧。一般来说IDEA配置好JDK以后。jdk的源码也就自动配置好了。
2024-01-08 15:20:30
527
原创 java方法重写/覆盖(override)
方法覆盖即子类有一个方法,与父类(或更上一级的父类)的某个方法的名称、参数、返回类型一样,那么我们就说子类的整个方法覆盖了父类的方法。比如,父类方法是默认修饰符,子类是public,这样是对的,但是反过来就会缩小父类的访问 权限。比如、父类返回类型是 Object,子类返回类型是String,(String是Object的子类)2、子类方法的返回类型和父类方法的返回类型一样、或者是。//super.say() 调用父类方法。3、子类方法不能缩小父类方法的访问权限。
2024-01-06 17:00:24
762
原创 java的继承(extends)
当多个类存在相同的属性[变量]和方法时,可以从这些类中抽象出 父类,在父类中定义这些相同的属性和方法,只需要通过 extends 来 声明继承父类即可继承示意图。
2024-01-03 22:01:01
4814
原创 java 封装(encapsulation)
封装(encapsulation)是将抽象出的数据[属性] 和 对数据的操作[方法]封装在一起,数据被保护在内部,程序的 其他部分只有 通过被授权的 操作[方法] ,才能对数据进行操作对电视机的操作就是典型的封装电视机的开关机 音量加减 过程其实很复杂,但是对于用户而言 ,只需按按钮即可,不需要关系内部发生的事情。
2024-01-02 21:07:42
860
原创 java的访问修饰符(public protected private 默认)
java提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围)1、公开级别:用public 修饰,对外公开2、受保护级别:用protected修饰,对子类和同一个包中的类公开3、默认级别:没有修饰符号,向同一个包的类公开。4、私有级别:用private修饰,只有类本身可以访问,不对外公开。
2024-01-02 17:15:37
574
原创 java中的包
1、package的作用是 声明当前类所在的包, 需要放在 类的最上面(像上面的代码),一个类中最多只有一句package。加入A和B共同开发一个项目,A希望定义一个类名为Dog,B也希望定义一个类名为Dog,这时如何解决呢,就需要包了。2、java.tuil //util包,系统提供的工具包,工具类,例如 Scanner。输入包名为 com.a 则会在src下创建文件夹 com,在com下创建 a。2、当类很多时,可以很好的管理类,[例如java的API文档]
2024-01-02 16:12:01
607
原创 IDEA快捷键、自定义模板
快速格式化代码(改善代码格式,砍起来更好看) ctrl + alt + L。【第一次是添加注释,第二次是取消注释】快速运行程序 自己定义 shift +在java中找到+号 进行添加。将光标放在一个方法上,输入。导入该行需要的类 先配置。ctrl + 左键 ,查看一个类的层级关系。学习继承后,非常有用。还有很多其它的快捷键。自己的定义的一些模板。
2024-01-02 15:14:51
547
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人