数据结构与算法

谈谈一致性哈希算法

一致性哈希算法是1997年由麻省理工的几位学者提出的用于解决分布式缓存中的热点问题。大家有没有发现,我们之前介绍的例如快排之类的算法是更早的六七十年代,此时分布式还没有发展起来,大家往往还在提高单机性能。但是九十年代开始,逐渐需要用分布式集群来解决大型问题,相应的算法研究也就应运而生。在说到一致性哈 ... »

《数据结构与算法》之栈结构

导言: 在计算机发明之初是为了计算,所以叫计算机,对我们给定的一个算式,然后给定的一套规则 加,减,乘,除,等,它就可以自己进行计算了,然后返回一个结果给我们 对于一般的算式 : 2+3+4 很显然,从左往右依次扫描,依次相加很简单的计算出来,因为它们是同级运算,可以很简单的做到 但是,常见的运算不 ... »

《数据结构与算法》之十大基础排序算法

一.冒泡排序 什么是冒泡排序? 冒泡排序是一种交换排序,它的思路就是在待排序的数据中,两两比较相邻元素的大小,看是否满足大小顺序的要求,如果满足则不动,如果不满足则让它们互换。 然后继续与下一个相邻元素的比较,一直到一次遍历完成。一次遍历的过程就被成为一次冒泡,一次冒泡的结束至少会让一个元素移动到了 ... »

数据结构与算法大作业:走迷宫程序(C语言,DFS)(代码以及思路)

好家伙,写大作业,本篇为代码的思路讲解 1.大作业要求 走迷宫程序 问题描述: 以一个 m * n 的长方阵表示迷宫, 0和1分别表示迷宫的通路和障碍。 设计一个程序, 对任意设定的迷宫, 求出一条从入口到出口的通路, 或得出没有通路的结论。 基本要求: (1) 实现一个以链表做存储的栈类型, 然后 ... »

FatTiger4399

Java数据结构之集合框架与常用算法详解

目录 1 集合框架 1.1 集合框架概念 1.2 容器涉及的数据结构 2 算法 2.1 算法概念 2.2 算法效率 3 时间复杂度 3.1 时间复杂度概念 3.2 大O的渐进表示法 3.3 推导大O阶方法 4 空间复杂度 1 集合框架 1.1 集合框架概念 Java 集合 »

稀疏数组

实际问题: 1)基本介绍 当一个数组中大部分元素都是0、或大部分都是相同的元素时,可以使用稀疏数组来保存此数组 处理方法: 第一行记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行、列、值,记录在一个小规模的数组中,从而缩小程序规模 2)应用实例 代码实现: package DataS ... »

数据结构与算法之手撕排序算法

目录 前言 为什么要学习排序算法? 一.排序的概念及其应用 1.1排序的概念 1.2排序运用 1.3 常见的排序算法 二.排序算法分类 1.插入排序 1.1基本思想: 1.2直接插入排序: 1.3 希尔排序( 缩小增量排序 ) 2选择排序 2.1基本思想: 2.2 直接选择排序: »

内存对齐的规则

1、 对于结构的各个成员,第一个成员位于偏移为0的位置,以后每个数据成员的偏移量必须是min(#pragma pack()指定的数,这个数据成员的自身长度) 的倍数。 2、 在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构(或联合)最大数 ... »

LRU缓存替换策略及C#实现

LRU缓存替换策略 缓存是一种非常常见的设计,通过将数据缓存到访问速度更快的存储设备中,来提高数据的访问速度,如内存、CPU缓存、硬盘缓存等。 但与缓存的高速相对的是,缓存的成本较高,因此容量往往是有限的,当缓存满了之后,就需要一种策略来决定将哪些数据移除出缓存,以腾出空间来存储新的数据。 这样的策 ... »

关于Python的高级数据结构与算法

目录 一、简介 二、栈(Stack) 三、队列(Queue) 四、堆(Heap) 五、排序算法(Sorting Algorithms) 1. 冒泡排序(Bubble Sort) 2. 选择排序(Selection Sort) 3. 插入排序(Insertion Sort) 六、查找算法(Sea »

【LeetCode动态规划#05】背包问题的理论分析(基于代码随想录的个人理解,多图)

背包问题 问题描述 背包问题是一系列问题的统称,具体包括:01背包、完全背包、多重背包、分组背包等(仅需掌握前两种,后面的为竞赛级题目) 下面来研究01背包 实际上即使是最经典的01背包,也不会直接出现在题目中,一般是融入到其他的题目背景中再考察 因为是学习原理,所以先跳过最原始的问题模板来学。 0 ... »

【LeetCode动态规划#05】背包问题的理论分析(基于代码随想录的个人理解,多图)

背包问题 问题描述 背包问题是一系列问题的统称,具体包括:01背包、完全背包、多重背包、分组背包等(仅需掌握前两种,后面的为竞赛级题目) 下面来研究01背包 实际上即使是最经典的01背包,也不会直接出现在题目中,一般是融入到其他的题目背景中再考察 因为是学习原理,所以先跳过最原始的问题模板来学。 0 ... »

数据结构-布隆过滤器

1.布隆过滤器的概念 定义 布隆过滤器:是⼀种概率型数据结构,特点是⾼效的插⼊和查询,能明确告知某个字符串⼀定不存在或者可能存在; 优点和缺点 优点:布隆过滤器相⽐传统的查询结构更加⾼效,占⽤空间更⼩; 例如:hash,set,map等数据结构-》冲突率高的时候,插入和查询效率降低 缺点:是它返回的 ... »

数据结构-布隆过滤器

1.布隆过滤器的概念 定义 布隆过滤器:是⼀种概率型数据结构,特点是⾼效的插⼊和查询,能明确告知某个字符串⼀定不存在或者可能存在; 优点和缺点 优点:布隆过滤器相⽐传统的查询结构更加⾼效,占⽤空间更⼩; 例如:hash,set,map等数据结构-》冲突率高的时候,插入和查询效率降低 缺点:是它返回的 ... »

【数据结构与算法学习】散列表(Hash Table,哈希表)

实现语言:C++ 1. 散列表 散列表,英文名称为Hash Table,又称哈希表、杂凑表等。 线性表和树表的查找是通过比较关键字的方法,查找的效率取决于关键字的比较次数。 而散列表是根据关键字直接访问的数据结构。散列表通过散列函数将关键字映射到存储地址,建立了关键字和存储地址之间的一种直接映射关系 ... »

shaoxx333