算法与数据结构

数据结构与算法知识点总结(4)各类排序算法

1. 插入排序 1.1 直接插入排序 直接插入排序的特点: 时空效率: 时间复杂度为O(n^2),空间复杂度为O(1)。最好情况下是元素基本有序,此时每插入一个元素,只需比较几次而无需移动,时间复杂度为O(n) 稳定性: 保证相等元素的插入相对位置不会变化,稳定排序 void insertion_s ... »

数据结构 - AVL 树

简介 基本概念 AVL 树是最早被发明的自平衡的二叉查找树,在 AVL 树中,任意结点的两个子树的高度最大差别为 1,所以它也被称为高度平衡树,其本质仍然是一颗二叉查找树。 结合二叉查找树,AVL 树具有以下特性: 若任意结点的左子树不为空,则左子树上所有结点的值均小于它的根结点的值 若任意结点的右 ... »

数据结构 - 跳表

简介 有序的数组可以使用二分查找的方法快速检索一个数据,但是链表没有办法使用二分查找。 对于一个单向链表来说,即使链表中存储的是有序的数据,但如果想要从中查找某个数据时,也只能从头到尾遍历链表,其时间复杂度是 \(O(n)\)。 为了提高链表的查询效率,使其支持类似“二分查找”的方法,对链表进行多层 ... »

数据结构之堆 → 不要局限于堆排序

开心一刻 一天,一个演讲老师正在演讲正确的爱情观 情到深处,老师激动的说道:你一个月挣三千,凭什么让一个月挣三万的人喜欢你? 结果底下站起来一个女孩,说道:因为我骚呀 堆结构 定义:堆就是用数组实现的完全二叉树,并且根据堆属性来排序,决定节点在树中的顺序 信息量是不是有点大? 欸,有这些疑问就对了, ... »

数据结构与算法知识点总结(1)数组与链表

1. 动态数组 它的基本思路是使用如malloc/free等内存分配函数得到一个指向一大块内存的指针,以数组的方式引用这块内存或者直接调用动态数组的接口,根据其内部的实现机制自行扩充空间,动态增长并能快速地清空数组,对数据进行排序和遍历。 它的数据结构定义如下: typedef struct { v ... »

【数据结构与算法】手撕红黑树

红黑树 定义 动机: 二叉查找树查找、插入、删除最坏情况时间复杂度可能退化为 O(n)。 AVL 树很好的限制了数的高度为 O(logn),插入、删除、查找的最坏时间复杂度均为 O(logn);但删除操作最多需要做 O(logn) 次旋转。 红黑树是具有如下特点的二叉查找树: 每个结点是红色或黑色的 ... »

【数据结构与算法】手撕平衡二叉树

平衡二叉树 定义 动机:二叉查找树的操作实践复杂度由树高度决定,所以希望控制树高,左右子树尽可能平衡。 平衡二叉树(AVL树):称一棵二叉查找树为高度平衡树,当且仅当或由单一外结点组成,或由两个子树形 Ta 和 Tb 组成,并且满足: |h(Ta) - h(Tb)| ⇐ 1,其中 h(T) 表示树 ... »

leetcode210.拓扑排序

拓扑排序能否成功,其实就是看有没有环 有环:说明环内结点互为前置,永远也不可能完成 无环:是线性的,可以完成 DFS方法 思路: 逆向思维,遍历到边界点(无邻接点相当于叶子),再不断回溯将结点加入到结果中,得到的是拓扑排序的逆序,进行反转即可得到拓扑序列。 遍历过程中判断是否有环。 注意:要使用vi ... »

【算法】算法与数据结构的关系

博客推行版本更新,成果积累制度,已经写过的博客还会再次更新,不断地琢磨,高质量高数量都是要追求的,工匠精神是学习必不可少的精神。因此,大家有何建议欢迎在评论区踊跃发言,你们的支持是我最大的动力,你们敢投,我就敢肝 ... »

数据结构与算法(十三)——红黑树2

三、删除 1、介绍 红黑树的删除类似于排序二叉树,排序二叉树主要分为三种情况: (1)删除没有左孩子且没有右孩子的结点。即:度为0。 (2)删除只有左(右)孩子的结点。即:度为1。 (3)删除有左孩子且有右孩子的结点。即:度为2。 由于红黑树还有颜色的区分,所以在上述三种情况的基础上加上颜色,就是六 ... »

哈希表的原理

哈希表的原理 简介 哈希表是一种根据关键字key来访问值value的一种数据结构。 哈希表的基本原理 哈希表的本质是数组加哈希函数。数组不难理解,那什么是哈希函数? 在哈希表中,它的作用就是将哈希表的某个key作为输入,然后经过一系列的运算后,得到数组的某 个索引。一种很朴素的思路是,先用key计算 ... »

在数据结构与算法中 传值方式(C语言)

本文是因为自己确确实实遇到了&引用的问题,导致自己对于C语言的理解与老师的想法发生了冲突,自己通过查阅视频和看CSDN作者文章https://blog.csdn.net/JayRoxis?type=blog 很感谢JayRoxis作者的文章 ... »

chzzg

数据结构与算法(十三)——红黑树1

一、概述 1、介绍 红黑树是一种自平衡的排序二叉树,常用于关联数组、字典,在各种语言的底层实现中被广泛应用,Java 的 TreeMap 和 TreeSet 就是基于红黑树实现的,在 JDK 8 的HashMap中也有应用。 红黑树是在排序二叉树的基础上定义的,且还要满足以下性质(重要):(请务必先 ... »

【数据结构与算法】Trie(前缀树)模板和例题

Trie 树的模板 Trie 树的简介 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。他的核心思想是空间换时间,空间消耗大但是插入和查询有着很优秀的时间复杂度。 Trie 树的定义 Trie树的键不是直接保 ... »

数据结构与算法----# 一、排序

一、排序 1、比较器Comparable Java中的比较器(排序) - 情陌人灬已不在 - 博客园 (cnblogs.com) Comparable和Comparator接口都是为了对类进行比较,众所周知,诸如Integer,double等基本数据类型,java可以对他们进行比较,而对于类的比较, ... »