![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
战战兢兢的战战
这个作者很懒,什么都没留下…
展开
-
java对数组的简单操作
以下是对数组的几个简单操作:public class ArrayUtils{ //1.计算数组中最大值 public static int arrayMaxElement(int[] data){ if(data == null || data.length == 0) return -1; int max = data[0]; for(in...原创 2018-11-14 11:13:39 · 280 阅读 · 0 评论 -
快速排序(Java)
当数据随机分配时,采用快速排序的平均时间最短。每一轮设一个基点,小于基点的数方基点左边,大于等于基点的放基点右边。因为每次交换不仅限于两相邻数之间,所以大会减少交换的次数,从而提高效率。但最坏情况下仍是只有两相邻数之间金子那个比较交换,最坏时间复杂度:O(n^2)原理:每一趟排序 可将序列分为两部分,其中一部分比另一部分要小,分别对这两部分进行相同的排序操作,直到整个数列有序。过程:6...原创 2019-09-04 13:24:45 · 146 阅读 · 0 评论 -
堆排序(Java)
堆排序首先要建堆(大堆、小堆,这里以大堆为例)从下往上调整:(从第一个非叶结点开始)每次建好堆后,堆顶元素与堆尾元素交换位置,再对除堆尾元素后剩下的元素进行调整,重新建堆新建的堆(除去上一次的堆尾)中,堆顶与堆尾元素交换位置,除去堆尾元素进行调整……直到调整到堆顶位置处 /** * 堆排序 * 要注意的点:建堆、除去堆顶元素后剩余元素如何调整 ...原创 2019-09-03 18:43:18 · 126 阅读 · 0 评论 -
冒泡排序及优化、选择排序及优化
1.冒泡排序 /**冒泡排序(稳定) * 比较相邻的两个数,如果前者比后者大,则进行交换。每一轮排序结束,选出一个未排序中最大的数放 到数组后面。 * 最坏时间复杂度:O(n^2) * 平均时间复杂度:O(n^2) */ public static int[] bubbleSort(int[] arr){ ...原创 2019-09-03 14:03:55 · 498 阅读 · 0 评论 -
二叉树的增、删、查操作,计算二叉树结点、叶结点个数,获取节点的父结点,遍历二叉树(前序、中序、后序)
首先先封装一个TreeNode类,用来创建二叉树的结点:/* * 二叉树的简单操作 * 二叉排序树中,左节点值<=根结点值<=右结点值,左子树结点<=根结点<=右子树结点*///树结点类class TreeNode{ private TreeNode leftNode;//左结点 private int value;//结点值 pri...原创 2019-09-03 12:24:47 · 650 阅读 · 0 评论 -
插入排序
插入排序典型的两种排序算法:直接插入排序、希尔排序。1.直接插入排序:经一个数据插入到一个已经排好序的有序表中,得到一个新的有序表,新的有序表长度+1.要注意的是:每一轮排序的过程中需要建立一个哨兵来记录中间变量以及确定数组边界。public int[] insertSort(int[] arr){ if(arr.length == 0){ return nu...原创 2019-09-02 15:29:44 · 1369 阅读 · 0 评论 -
逆波兰表达式求值(Java)
什么是逆波兰表达式? 逆波兰表达式又叫做后缀表达式。在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,所以,这种表示法也称为中缀表示。波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法。按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。例如:逆波兰表达式 4 7 5- / 解析成普通的算数表达式为4/(7-5)结果为212 3 ...原创 2019-08-20 18:50:36 · 452 阅读 · 0 评论 -
与图灵机器人进行语音对话(Java)(百度语音识别/合成)
使用Java编写一个与图灵机器人进行对话的工具。但图灵机器人只支持文本对话,并不支持语音交互,所以本程序运用了第三方库百度语音识别/合成,来实现语音交互。我们还可以将下载好的音乐放入指定文件夹,进行简单的配置后还能点歌。1.登录图灵机器人官网:http://www.turingapi.com/,完成注册、身份认证、创建机器人。一般一到两天后就能身份审核成功,创建好机器人之后就会生成自己...原创 2019-07-16 10:01:34 · 2859 阅读 · 3 评论 -
多例设计模式
多例设计模式与单例设计模式的共同点:1.他们的构造方法都私有化;2.类中都有static的getter方法,用来获取私有的对象属性多例设计模式:class Driver { private String driver; public static final int MALE_DRIVER = 1; public static final int FEMA...原创 2019-04-27 10:44:28 · 136 阅读 · 0 评论 -
单例设计模式
单例设计模式基本要求:一个类只允许产生一个实例化对象实例化对象的方法有很多种:1.一般情况下实例化对象(1)普通情况下实例化对象class Singleton{ public void print() { System.out.println("普通情况下实例化对象"); }}public class SingletonTest { pu...原创 2019-04-27 10:35:33 · 104 阅读 · 0 评论 -
抽象类与接口的区别
接口看成一个“纯抽象类”,可以说成是抽象类的一种特例。接口中所有的方法默认为public abstract类型,接口中成员变量默认为public static final类型。另外,抽象类与接口还有以下区别:1.抽象类中可以有普通方法和抽象方法。接口中的方法只能是抽象方法。2.抽象类方法访问权限:public、protected、默认。接口方法访问权限:public。3.抽象类中可以有...原创 2019-04-08 22:27:15 · 275 阅读 · 0 评论 -
接口的定义与使用
接口定义:接口时抽象方法与全局常量的集合。子类实现接口时,用关键字implements实现。定义一个接口:interface Person{ public static final String name = "葵葵";//全局常量 public abstract void getInfo();//抽象方法}接口特点:1.接口中所有方法都必须是抽象的,默认修饰符...原创 2019-04-06 19:18:10 · 2813 阅读 · 0 评论 -
抽象类的定义与使用
抽象类定义:抽象类只是在普通类的基础上多了抽象方法。抽象方法用abstract修饰,只有方法声明而没有方法体。定义一个抽象类:abstract class Main { private int num; //普通方法 public void setNum(int num) { this.num = num; } //抽象方法,没...原创 2019-04-06 16:16:48 · 2371 阅读 · 0 评论 -
归并排序(Java)
归并排序采用分治思想,现将大问题分解成若干个小问题进行递归求解,再将每个小问题的结果合并起来求解大的问题,分而治之第每一部分的排序复杂度为O(N),深度为logN,所以归并排序的时间复杂度为O(NlogN),最好、最坏、平均时间复杂度都是O(NlogN)。Java实现: //归并 public void merge(int[] arr, int left, int ...原创 2019-09-04 13:48:28 · 133 阅读 · 0 评论