文章分类 - 算法
摘要:转载地址:https://www.cnblogs.com/study-everyday/p/8629100.html 一、算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类
阅读全文
摘要:写在最前面希望大家收藏: 本文持续更新地址:https://haoqchen.site/2018/05/23/go-through-binary-tree/ 复习到二叉树,看到网上诸多博客文章各种绕,记得头晕。个人觉得数学、算法这些东西都是可以更直观简洁地表示,然后被记住的,并不需要靠死记硬背。 本
阅读全文
摘要:一、哈希碰撞是什么? 所谓哈希(hash),就是将不同的输入映射成独一无二的、固定长度的值(又称"哈希值")。它是最常见的软件运算之一。 如果不同的输入得到了同一个哈希值,就发生了"哈希碰撞"(collision)。 举例来说,很多网络服务会使用哈希函数,产生一个 token,标识用户的身份和权限。
阅读全文
摘要:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2: 输入:n = 1输出:["()"] 来源:力扣(LeetCode)
阅读全文
摘要:转载地址:https://cuijiahua.com/blog/2018/01/alogrithm_10.html 一、前言 我们首次接触 BFS 和 DFS 时,应该是在数据结构课上讲的 “图的遍历”。还有就是刷题的时候,遍历二叉树我们会经常用到BFS和DFS。它们的实现都很简单,这里我就不哆嗦去
阅读全文
摘要:转载地址:https://www.cnblogs.com/ddddemo/p/6580737.html 桶排序中最重要的环节是映射函数。 初步学习桶排序的过程中,映射比较简单。实现代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
阅读全文
摘要:/** * @param $y 多少年 * @return int 多少头 */ function niu($y){ //定义静态变量;初始化牛的数量为1 static $num= 1; for ($i=1; $i <=$y ; $i++) { //每年递增来算,4岁开始+1,15岁不能生育 if(
阅读全文
摘要: 转载地址:https://zhuanlan.zhihu.com/p/139907457 2017年,小灰曾经发布过一篇关于红黑树的漫画,当时由于时间仓促,部分知识点一带而过,并没有讲解得很细致全面。 最近,小灰把这个知识点重新做了总结,分成上下两篇,希望大家把红黑树这个重要的数据结构彻底吃透。
阅读全文
摘要:快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 基本步骤 三数取中 在快排的
阅读全文
摘要:预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于
阅读全文
摘要:希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现。 基本思想 希尔排序是把记录按
阅读全文
摘要:排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。但是了解这些精妙的思想对我们还是大有裨益的。本文简单温习下最基础的三类算法:选择,冒泡,插入。 先定义个交换数组元素的函数,供排序时调用 /** * 交换数组元素 *
阅读全文
摘要:基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 分而治之 可以看到
阅读全文
摘要:public class Main { public static void main(String[] args) { int[] arr = {1, 2, 2, 2, 2, 3, 1}; System.out.println(getMax(arr)); } public static int g
阅读全文
摘要:转载地址:https://www.cnblogs.com/onepixel/p/7674659.html 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类
阅读全文
摘要:桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶
阅读全文
摘要:计数排序 计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。 [1] 当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n)
阅读全文
摘要:堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 中文名堆排序外文名Heapsort类 别排序算法发明人罗伯特·弗洛伊德起源于罗伯特·弗洛伊德 目录 1 简介 2 堆的
阅读全文

浙公网安备 33010602011771号