01 上次课程回顾

希尔排序 又叫减少增量排序

increasement = increasement / 3 + 1

02 快速排序思想

思想: 分治法 + 挖坑填数

分治法: 大问题分解成各个小问题,对小问题求解,使得大问题得以解决

03 快速排序代码实现

let arr = [23,123,34,5,123,5,5,3,2,3,1,46,234,123,123]
function quicksort(arr,start,end)
{
let i = start
let j = end
 
// 设置递归退出条件
if(start >= end) return
let benchmark = arr[start]
while(i != j)
{
while(i<j && arr[j] >= benchmark)
{
j--;
}
while(i<j && arr[i] <= benchmark)
{
i++;
}
if(i<j)
{
let t = arr[i]
arr[i] = arr[j]
arr[j] = t
}
}
arr[start] = arr[i]
arr[i] = benchmark
quicksort(arr,start,i-1)
quicksort(arr,i+1,end)
}
quicksort(arr,0,arr.length-1)
console.log(arr)

04 归并排序

归并排序基本思想: 将两个有序序列合并成一个有序序列

将两个合成一个有序序列

06 堆排序思路

完全二叉树

知道完全二叉树(complete binary tree)的先序序列就可以确定它的唯一结构:

堆:

大顶堆:

父节点比两个子节点大

小顶堆:

父节点比两个子节点都小

堆就是完全二叉树 不过要满足条件:

给了我们一个数组 就相当于给了我们一个完全二叉树 他还不满足堆的条件

通过调整堆,初始化堆

数组个数除以2正好是最后一个子树

然后在这个子树里面进行交换 形成堆

08 web闲聊

socket套接字

补:高级数据结构:

二叉排序树:

一棵树 左边比结点小 右边比结点大

用来查找。

平衡二叉树:

二叉排序树可能退化成一种链表。

平衡二叉树左右子树差不能大于一(小于等于)

反转:

红黑树

  1. 节点颜色: 红,黑
  2. 根节点必须是黑色的
  3. 红节点下边不能挂红结点
  4. 每一条路径的黑结点个数相等
  5. NULL结点默认是黑色的

B树,B+树:

应用场景:

操作的不是内存里的数据

操作的是硬盘里的数据

高度有限

子节点很多(孩子最少几千个,不是二叉树)

应用:操作系统的文件系统 数据库的数据文件

数据结构(5) 第五天 快速排序、归并排序、堆排序、高级数据结构介绍:平衡二叉树、红黑树、B/B+树的更多相关文章

  1. 红黑树、B(+)树、跳表、AVL等数据结构,应用场景及分析,以及一些英文缩写

    在网上学习了一些材料. 这一篇:https://www.zhihu.com/question/30527705 AVL树:最早的平衡二叉树之一.应用相对其他数据结构比较少.windows对进程地址空间 ...

  2. 数据结构(一)二叉树 & avl树 & 红黑树 & B-树 & B+树 & B*树 & R树

    参考文档: avl树:http://lib.csdn.net/article/datastructure/9204 avl树:http://blog.csdn.net/javazejian/artic ...

  3. Java数据结构和算法(八)--红黑树与2-3树

    红黑树规则: 1.每个节点要么是红色,要么是黑色 2.根节点都是黑色节点 3.每个叶节点是黑色节点 3.每个红色节点的两个子节点都是黑色节点,反之,不做要求,换句话说就是不能有连续两个红色节点 4.从 ...

  4. c语言 快速排序---归并排序----堆排序

    //快速排序: #include <stdio.h> #define MAX 500000 int s[MAX]; void Q_Sort(int start,int end) { int ...

  5. 数据结构图解(递归,二分,AVL,红黑树,伸展树,哈希表,字典树,B树,B+树)

    递归反转 二分查找 AVL树 AVL简单的理解,如图所示,底部节点为1,不断往上到根节点,数字不断累加. 观察每个节点数字,随意选个节点A,会发现A节点的左子树节点或右子树节点末尾,数到A节点距离之差 ...

  6. 数据结构与算法——常用高级数据结构及其Java实现

    前文 数据结构与算法--常用数据结构及其Java实现 总结了基本的数据结构,类似的,本文准备总结一下一些常见的高级的数据结构及其常见算法和对应的Java实现以及应用场景,务求理论与实践一步到位. 跳跃 ...

  7. 数据结构和算法(Golang实现)(29)查找算法-2-3树和左倾红黑树

    某些教程不区分普通红黑树和左倾红黑树的区别,直接将左倾红黑树拿来教学,并且称其为红黑树,因为左倾红黑树与普通的红黑树相比,实现起来较为简单,容易教学.在这里,我们区分开左倾红黑树和普通红黑树. 红黑树 ...

  8. 红黑树(五)之 Java的实现

    概要 前面分别介绍红黑树的理论知识.红黑树的C语言和C++的实现.本章介绍红黑树的Java实现,若读者对红黑树的理论知识不熟悉,建立先学习红黑树的理论知识,再来学习本章.还是那句老话,红黑树的C/C+ ...

  9. 浅谈算法和数据结构: 七 二叉查找树 八 平衡查找树之2-3树 九 平衡查找树之红黑树 十 平衡查找树之B树

    http://www.cnblogs.com/yangecnu/p/Introduce-Binary-Search-Tree.html 前文介绍了符号表的两种实现,无序链表和有序数组,无序链表在插入的 ...

随机推荐

  1. HDU4572 Bottles Arrangement

    /* HDU4572 Bottles Arrangement http://acm.hdu.edu.cn/showproblem.php?pid=4572 数论 找规律 题意:有m行n列和1-n的数各 ...

  2. nyoj 547 优先队列

    #include<stdio.h> #include<string.h> #include<queue>//水杯盛水问题,用优先队列不断从最小的边缘开始 using ...

  3. hdu 2586 lca在线算法(朴素算法)

    #include<stdio.h> #include<string.h>//用c/c++会爆栈,用g++ac #define inf 0x3fffffff #define N ...

  4. EXTJS之Ext.util.Observable自定义事件

    暂时还不会用Ext.mixin.Observable, 催悲的测试了近两个小时.这TMD的语法差距也太大了啊.. 在新版EXTJS里,已去除了addEvents. 弄个出来,大概知道下吧. <! ...

  5. A. Feed the cat

    A. Feed the cat time limit per test: 1 second memory limit per test: 256 megabytes input: standard i ...

  6. Spring MVC-表单(Form)标签-多行文本框(TextArea)示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_textarea.htm 说明:示例基于Spring MVC 4.1.6. 以下示 ...

  7. Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader

    Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader 之前写了两篇文章,介绍了我在边缘检測上面的研究.实际上.使用GPU对渲染图像进行边缘检測.前提是须要进行两遍渲染.前 ...

  8. MySQL数据库——索引与视图

    索引 MySQL的索引包括普通索引.唯一性索引(unique index).全文索引(fulltext index).单列索引.多列索引和空间索引等. 1.索引的创建 ·创建表的时候创建索引 SQL语 ...

  9. ScrollViewer滚动究竟来触发载入数据的Behavior

    近期项目中遇到载入数据的性能问题, 原因是.net4.0的虚拟化支持不够完毕,有好多bug在4.5才修复. 我们仅仅能利用大家通用的做法来延迟载入数据: 每次载入固定少量的数据.当拖动究竟后.继续载入 ...

  10. 杂项-事务:OLTP(联机事务处理过程)

    ylbtech-杂项-事务:OLTP(联机事务处理过程) On-Line Transaction Processing联机事务处理过程(OLTP) 也称为面向交易的处理过程,其基本特征是前台接收的用户 ...