自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 ConcurrentHashMap在jdk1.8的详解

源码为jdk1.8Java7与Java8中的ConcurrentHashMap:在ConcurrentHashMap中主要通过锁分段技术实现上述目标。在Java7中,ConcurrentHashMap由Segment数组结构和HashEntry数组组成。Segment(分段锁) ,ConcurrentHashMap中的分段锁称为Segment,它即类似于HashMap的结构,即内部拥有一个...

2019-04-25 20:57:54 715

原创 单链表+环

1.链表的创建,(头插,尾插,/任意位置插入)2. 删除单链表中所有值为val的值; O(n)的时间3. 得到表长度4. 创建环:5. 求环的入口点:6. 求环的长度:7. 判断是否有环8. **单链表的逆置?(使用头插法逆置)9. 反转class Link { class Entry{ int data; Entry next;...

2019-03-03 20:19:24 183

原创 七大排序整理(选择排序/直接插入排序/shell(希尔)排序/冒泡排序/快速排序/堆排/归并排序)

选择排序 :请看后文 直接插入排序 : 请看后文 shell排序 : 请看后文 冒泡排序 : 请看后文 快速排序 快速排序请点此链接 堆排 堆排请点此链接 归并排序 归并排序请点此链接各种排序性能对比如下:排序类型平均情况最好时间复杂度最坏时间复杂度空间复杂度稳定性选择排序O(n²)O(n²)O(n²...

2019-02-24 13:30:19 219

原创 排序-归并排序(二路归并)

时间复杂度:O(nlog₂n) 空间复杂度:O(n) 稳定;思路:归并排序是建立在归并操作上的一种有效的排序算法,是采用分治法的一个典型应用; 即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。public class MergeSort { public static void main(String[] args) { R...

2019-02-24 13:25:33 330

原创 排序-堆排序(heapSort)

时间复杂度:O(nlog₂n) 空间复杂度:O(1) 不稳定把此序列对应的二维数组看成一个完全二叉树。那么堆的含义就是:完全二叉树中任何一个非叶子节点的值均不大于(或不小于)其左,右孩子节点的值。 由上述性质可知大顶堆的堆顶的关键字肯定是所有关键字中最大的,小顶堆的堆顶的关键字是所有关键字中最小的。因此我们可使用大顶堆进行升序排序, 使用小顶堆进行降序排序。基本思想:此处以大顶堆为例,堆...

2019-02-24 13:20:03 183

原创 排序-快速排序之固定位置选取基准法(递归/非递归)

快速排序 固定位置选取排序:数据越有序,复杂度越高 随机选取基准排序 请点击查看 三分取中法 请点击查看 基于三分取中法的几种优化 请点击查看快速排序(递归):好:0(nlog2n), 坏:O(n2). 空间复杂度O(nlog₂n) 不稳定好情况:Partition 每次都划分得很均匀。坏情况:当待排序数组是正序或者逆序的时候。(退化成选择排序了)平均时间复杂度...

2019-02-24 13:14:14 705

原创 排序-快速排序之随机选取基准法

思想:基本的快速排序选取第一个或者最后一个元素作为基准。这样在数组已经有序的情况下,每次划分将得到最坏的结果。一种比较常见的优化方法是随机化算法,即随机选取一个元素作为基准。这种情况下虽然最坏情况仍然是O(n2),但最坏情况不再依赖于输入数据,而是由于随机函数取值不佳。实际上,随机化快速排序得到理论最坏情况的可能性仅为1/(2n)。所以随机化快速排序可以对于绝大多数输入数据达到O(nlogn)的期...

2019-02-24 13:06:18 2767 2

原创 排序-快速排序之三分取中法

思想:引入的原因:虽然随机选取枢轴时,减少出现不好分割的几率,但是还是最坏情况下还是O(n^2),要缓解这种情况,就引入了三数取中选取枢轴分析:最佳的划分是将待排序的序列分成等长的子序列,最佳的状态我们可以使用序列的中间的值,也就是第N/2个数。可是,这很难算出来,并且会明显减慢快速排序的速度。这样的中值的估计可以通过随机选取三个元素并用它们的中值作为枢纽元而得到。事实上,随机性并没有多大的帮助...

2019-02-24 13:03:54 1665

原创 排序-快速排序的优化(三分取中法实现)

优化一:当待排列序列的长度分割到一定大小时,使用插入排序原因:对于很小和部分有序的数组,快排不如插入排序好。当待排序序列的长度分割到一定大小后,继续使用分割的效率比插入排序要差; 但是三分取中+插入排序还不能处理重复数组;优化二:聚集相同基准法;处理重复的数组元素原因:在一次分割结束后,可以把与par相等的元素聚集在一起。下次分割时,不用在对和par相等元素进行分割举例:待排序序列 1 ...

2019-02-24 13:03:39 799

原创 抽象类,密封类和接口

一.抽象类:1.抽象类介绍抽象方法的类abstract 关键字;抽象方法由abstract修饰,类需要由 abstract修饰抽象方法在抽象类内部不予以实现抽象方法不能被private修饰,默认为public的abstract class Animal{ public abstract void bark(); public void fun(){ ...

2018-11-04 18:29:12 397

原创 面向对象——继承和多态

面向对象——继承和多态一. 继承1.继承:是一种机制,可以进行代码的重用——基类(超类) 子类(派生类)   子类继承了 父类的除构造函数外的所有属性2.super关键字:super():----->调用基类的构造函数 //必须放在第一行super.data------->访问基类的数据成员super.func();—>调用基类...

2018-10-31 17:20:34 175

原创 工厂模式——单例模式

工厂模式——单例模式一.单例模式介绍:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。二. 单例模式分为:懒汉式单例模式(并不是线程安全的)饿汉式单例模式1.饿汉式单例模式class MySingleTon4{ private static MySingleTon4 sigleTon4 =new MySingleT...

2018-10-31 17:19:58 134

原创 java内部类

java内部类1.静态块和实例块(1.)static 所修饰的方法或者数据成员不依赖于对象static{this.naem = “youbo”this.age = 20}和实例块初始化{this.naem = “youbo”this.sex = 20}class Person1 { private int age; private String name;...

2018-10-30 17:32:40 97

原创 类和对象的初步认识(构造函数)

类和对象的初步认识(构造函数)Java是一门面向对象的编程语言(OOP) ,面向对象程序三大的特点:封装,继承,多态1.类:class Person { private int age; public int getAge() { return age; } public void setAge(int age) { this....

2018-10-30 15:52:57 173

原创 String的应用及递归

1.String的应用(1).字符串的左旋和右旋public static String reverse0(String str,int begin,int end) { char[] ch = str.toCharArray(); char tmp; while(begin < end) { tmp = ch[be...

2018-10-30 15:51:26 378

原创 String的初步理解

关于String类的定义和使用1. String str1 = new String("hello"); String str2 = "hello"; String str3 = "he"+new String("llo"); String str4 = "he"+"llo"; char[] array =

2018-10-26 11:26:55 216

原创 一维数组的排序及二维数组

一维数组的排序及二维数组一 . 数组的三个简单排序:1.冒泡排序:public static void bubbleSort(int[] array) { for(int i=0;i<array.length-1;i++) { for(int j=0;j<array.length-1-i;j++) { if(...

2018-10-22 18:30:17 624

原创 Java——数组的拷贝

1.for循环拷贝: int[] array={1,2,3,4,5}; int[] brray=new int[array.length]; for(int i=0;i<array.length;i++) { brray[i]=array[i]; }这是基本数据类型,如果修改b[i]的值,则a[i]的值不会发生变...

2018-10-19 10:14:53 149

原创 循环语句和数组

循环语句的理解1. do while 语句和while语句的区别:while语句在进入循环体之前要先判断条件是否成立,如果成立的话则进入循环体。而do…while语句则是先执行循环体,然后再判断条件是否成立,如果成立的话则继续循环体,如果不成立则跳出循环;也就是说do-while循环至少要执行一次循环语句。2.break和continue的区别:break和continue都是用来控制...

2018-10-16 23:17:56 564

原创 循环语句

刚开始用运算符时,最容易出错的情况1.例如 A=B&&C&&D ;如果B为flase,则C,D则不执行,A的值直接为flase;如果B为true,C为flase,则D就不执行;2.例如 A=B||C||D;如果B的值为true,C,D则不执行,A的值为true;如果B为flase,C为true,则D就不执行;循环语句1.switch语句格式:sw...

2018-10-13 19:25:17 118

原创 Java基本程序设计——基础语法

1.数据类型1.1数据类型分为两种:基本数据类型和引用数据类型1.1—1 基本数据类型有8种: 四种整型(byte,int , short , long) 两种浮点型(float,double) 一种字符型(char)1.1—2 引用数据类型 :类(class),接口(interface),数组(array),String;1.2 装包与拆包JAVA给简单类型都提供了对应的类类型...

2018-10-11 19:04:26 223

原创 java入门基础

java入门基础001从helloworld开始public class World{ public static void main(String[] args){ System.out.println("helloWorld"); }}class后面跟着的 World是这个类的名字,一个文件中只能有一个类;main函数前的public是访问修饰限定符(还有private p...

2018-09-27 13:12:16 115

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除