Java常用数据结构和算法
二叉树:
1、每个结点不能多于两个子树;
2、一颗平衡二叉树的深度要比及结点个数N小得多。
二叉查找树:
1、结点x的所有左子树的值小于x,所有右子树的值大于x;
AVL树:
1、一种带有平衡条件的二叉查找树;
2、每个结点的左子树和右子树深度最多差1。
红黑树:
1、树的颜色只能为红色或黑色的一种平衡二叉树;
2、树的根结点和叶子结点必须为黑色;
3、红色结点的子结点必须为黑色,且必存在;
4、任一结点到其每个叶子结点黑色的结点树相同;
5、从根到叶子的最长的可能路径不多于最短的可能路径的两倍长
红黑树与平衡二叉树:
红黑树放弃了追求完全平衡,追求大致平衡,在与平衡二叉树的时间复杂度相差不大的情况下,保证每次插入最多只需要三次旋转就能达到平衡,实现起来也更为简单。
平衡二叉树又被称为AVL树
红黑树有更好的效率,更高的统计性能
鸡尾酒排序:
private static void sort(int[] arrys) {
int tmp = 0;
for (int i = 0; i < arrys.length/2; i++) {
boolean isSorted = true;
for (int j = i; j < arrys.length-i-1; j++) {
if(arrys[j]>arrys[j+1]){
tmp = arrys[j];
arrys[j] = arrys[j+1];
arrys[j+1] = tmp;
isSorted = false;
}
}
if(isSorted){
break;
}
isSorted = true;
for (int j = arrys.length-i-1; j > i; j--) {
if(arrys[j]<arrys[j-1]){
tmp = arrys[j];
arrys[j] = arrys[j-1];
arrys[j-1] = tmp;
isSorted = false;
}
}
if(isSorted){
break;
}
}
}
private static void sort(int[] arrys,int low, int high) {
int start = low;
int end = high;
int key = arrys[start];
while(end>start){
while(end>start&&arrys[end] >= key)//如果没有比关键值小的,比较下一个,直到有比关键值小的交换位置,然后又从前往后比较
end--;
if(key >= arrys[end]){
int tmp = arrys[end];
arrys[end] = arrys[start];
arrys[start] = tmp;
}
while(end>start&&key >= arrys[start])
start++;
if(arrys[start] >= key){
int tmp = arrys[end];
arrys[end] = arrys[start];
arrys[start] = tmp;
}
//此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用
}
if(start > low){
sort(arrys, low, start-1);//左边序列。第一个索引位置到关键值索引-1
}
if(high>end){
sort(arrys, end+1, high);//右边序列。从关键值索引+1到最后一个
}
}
Java常用数据结构和算法的更多相关文章
- 常用数据结构及算法C#/Java实现
常用数据结构及算法C#实现 1.冒泡排序.选择排序.插入排序(三种简单非递归排序) ,, , , , , , , , , }; //冒泡排序 int length = waitSort.Length; ...
- JAVA常用数据结构及原理分析
JAVA常用数据结构及原理分析 http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balaba ...
- (6)Java数据结构-- 转:JAVA常用数据结构及原理分析
JAVA常用数据结构及原理分析 http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balab ...
- 【转载】图解Java常用数据结构(一)
图解Java常用数据结构(一) 作者:大道方圆 原文:https://www.cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, 系统化看了下Jav ...
- java版数据结构与算法 (1综述)
很大部分转载自 https://blog.csdn.net/singit/article/details/54898316 数据的逻辑结构:反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系指数据元 ...
- 图解Java常用数据结构
最近在整理数据结构方面的知识, 系统化看了下 Java 中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于 jdk8, 可能会有些特性与 jdk7 之前不相同, 例如 LinkedList ...
- java之数据结构与算法
1.了解基本数据结构及特点 如,有哪些二叉树,各有什么特点 树二叉搜索树 每个节点都包含一个值,每个节点至多有两棵子树,左孩子小于自己,右孩子大于自己,时间复杂度是O(log(n)),随着不断插入节点 ...
- 面试常考的常用数据结构与算法(zz)
数据结构与算法,这个部分的内容其实是十分的庞大,要想都覆盖到不太容易.在校学习阶段我们可能需要对每种结构,每种算法都学习,但是找工作笔试或者面试的时候,要在很短的时间内考察一个人这方面的能力,把每种结 ...
- Java 常用数据结构对象的实现原理 集合类 List Set Map 哪些线程安全 (美团面试题目)
Java中的集合包括三大类,它们是Set.List和Map, 它们都处于java.util包中,Set.List和Map都是接口,它们有各自的实现类. List.Set都继承自Collection接口 ...
随机推荐
- usaco feb04距离咨询
[USACO FEB04]距离咨询 成绩 开启时间 2014年09月19日 星期五 10:08 折扣 0.8 折扣时间 2014年09月26日 星期五 10:08 允许迟交 是 关闭时间 2014 ...
- 【lombok】使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法
错误如题:使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法 报错如下: 解决方法: 1.首先查看你的lombok插件是否下载安 ...
- Websocket -- JS的前端页面
一个html5 WebSocket + JS的简单Echo例子,例子代码演示效果猛戳链接:websocket例子(打开页面,稍等一会) 使用一个文本编辑器,把下面代码复制保存在一个 websocket ...
- Python机器学习-分类
监督学习下的分类模型,主要运用sklearn实践 kNN分类器 决策树 朴素贝叶斯 实战一:预测股市涨跌 # -*- coding: utf-8 -*- """ Crea ...
- BUPT复试专题—进程管理(2014网研)
题目描述 在操作系统中,进程管理是非常重要的工作.每个进程都有唯一的进程标识PID.每个进程都可以启动子进程,此时我们称该它本身是其子进程的父进程.除PID为0的进程之外,每个进程冇且只冇一个父进程. ...
- Ghost本地安装highlight.js使代码高亮
对于程序猿写博客来说,这代码高亮是起码的要求.可是Ghost本身没有支持高亮代码. 可是能够通过扩展来实现,它就是highlight.js--附官方站点,看了下首页介绍,真的非常强大,如今说说怎么进行 ...
- C#语言基础语句
case,switch,break的使用 Console.WriteLine("1.汉堡"); Console.WriteLine("2.薯条"); Conso ...
- DASH----Desktop and mobile Architecture for System Hardware----桌面和移动系统硬件架构(DASH)计划
http://baike.baidu.com/subview/813787/11301142.htm http://sites.amd.com/cn/business/it-solutions/man ...
- actionbar tab 字体大小设置
在styles.xml文件里加入以下的样式就可以 <!-- Application theme. --> <style name="AppTheme" p ...
- JAVA学习之 Model2中的Servlet与.NET一般处理程序傻傻分不清楚
时隔多日,多日合适吗,应该是时隔多月.我又想起了一般处理程序.这都是由于近期在实现的DRP系统中经经常使用到jsp+servlet达到界面与逻辑的分离.servlet负责处理从jsp传回的信息:每当这 ...