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. Visible Trees

    Visible Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Pr ...

  2. 洛谷 P2587 BZOJ 1034 [ZJOI2008]泡泡堂

    题目描述 //不知道为什么BZOJ和洛谷都没有这幅图了,大牛们几年前的博客上都有这幅图的,把它贴上来吧 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省 ...

  3. HDU - 2923 - Einbahnstrasse

    题目: Einbahnstrasse Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  4. 逻辑斯蒂回归3 -- 最大熵模型之改进的迭代尺度法(IIS)

    声明: 1,本篇为个人对<2012.李航.统计学习方法.pdf>的学习总结,不得用作商用.欢迎转载,但请注明出处(即:本帖地址). 2,因为本人在学习初始时有非常多数学知识都已忘记.所以为 ...

  5. Linux GDB程序调试工具使用简单介绍

    GDB概述 GDB是GNU开源组织公布的一个强大的UNIX下的程序调试工具.也许,各位比較喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但假设你是在UNIX平台下做软件,你会发现GDB这个调试 ...

  6. ZOJ 1654 Place the Robots(最大匹配)

    Robert is a famous engineer. One day he was given a task by his boss. The background of the task was ...

  7. CF D. Beautiful numbers (数位dp)

    http://codeforces.com/problemset/problem/55/D Beautiful Numbers : 这个数能整除它的全部位上非零整数.问[l,r]之间的Beautifu ...

  8. 【Codeforces 105D】 Bag of mice

    [题目链接] http://codeforces.com/contest/148/problem/D [算法] 概率DP f[w][b]表示还剩w只白老鼠,b只黑老鼠,公主胜利的概率,那么 : 1. ...

  9. javascript必须知道的知识要点(一)

    该文章不详细叙述各知识要点的具体内容,仅把要点列出来,供大家学习的时候参照,或者检测自己是否熟练掌握了javascript,清楚各个部分的内容. 语句 注释 输出 字面量 变量 数据类型 typeof ...

  10. npm run dev 出现警告

    WARNING in ./node_modules/_webpack@3.10.0@webpack/buildin/global.js There are multiple modules with ...