数据结构与算法
数据结构与算法
刘小猴儿家的宋小狗儿
程序员
展开
-
重学数据结构 - 二分搜索树
为什么要有树结构树结构本身是一种天然的组织,比如公司的组织架构,比如我们的代码结构,图书的索引等。都是一种数结构。树最强大的功能是进行储存查询,为此计算机科学家们创造了诸如红黑树,AVL树,B+树,字典树,堆,并查集等数据结构,它们被广泛地运用于计算机的各个方面。- 一颗较均匀的树其高度∼Θ(log|V|),查询十分高效- 树的空间复杂度为Θ(|V|),利于储存- 树的性质可以一直被维护,能设计出持久化储存管理数据的结构- 树可以递归定义,其子树也满足定义,便于在增删的时候调整结构以维护树的定义原创 2020-09-25 18:32:12 · 145 阅读 · 0 评论 -
重学数据结构 - 链表与递归
递归基础递归的本质是将一个大的问题转化为更小的问题来处理,假设现在又一个计算的场景如数组求和Sum(array[0 … n-1]) = Sum(array[0]) + Sum(array[1 … n-1]),这条语句实际上是在处理同一个问题,但是等号后面的语句实际上是将前面的一个大的问题拆分成更小的问题来解并且根据这些小问题的解构建出愿问题的答案。是分治算法的核心思想。宏观语义...原创 2020-08-13 11:41:59 · 625 阅读 · 0 评论 -
重学数据结构 - 链表
链表的基本概念最基本的动态数据结构,与数组,栈,队列依赖于静态数组封装而来的实现不同,链表底层实现了真正的动态数组。链表一种线性的数据结构,通过指针将一个个零散的内存块连接起来,链表的每个内存块称为结点。最简单的动态数据结构链表更重要的作用(引用/指针) - 涉及到内存管理有清晰的递归结构和性质链表 Linked List数据存储在节点中(Node) //一个Node节点中一般来说只包含两个属性 class Node { //当前位置的实际数据原创 2020-08-04 11:11:39 · 539 阅读 · 0 评论 -
重学数据结构 - 栈和队列
栈的特性栈,一种特殊的数组结构,是一种后进先出的数据结构,对栈的操作通常分为入栈和出栈两种操作。- 在计算机的世界中,栈是一种非常重要的数据结构栈的应用程序调用系统栈比如一个程序在执行时,需要按照一定的条件跳到另外的程序执行,也就是所谓的子函数调用,在这个过程中,计算机就需要一个名称为系统栈的栈结构来记录程序的调用过程。示例Java Demopublic class Func { public void FuncA() { System.out.pr原创 2020-07-24 01:13:18 · 563 阅读 · 0 评论 -
重学数据结构 - 数组
前言数组虽然是一种简单的数据结构,如果我们从研究数据结构的角度来看这个问题,数据的可挖掘性实际上是很强的。概念把数据码成一排进行存放,Java存储类型固定,如String,Integer等。某些语言是可以存储不同类型的如C或者C++。#include <stdio.h>#include <stdlib.h>typedef union { int intType; char charType; float原创 2020-07-23 12:48:13 · 604 阅读 · 0 评论