死磕算法之汇总篇

死磕算法之汇总篇的相关文章

死磕算法之希尔排序

学习更多算法系列请参考文章:死磕算法之汇总篇 今天讲一下希尔排序,希尔排序呢,其实可以理解为插入算法排序的一个升级版了,不了解插入排序的小伙伴可以先看一下这篇文章:死磕算法之插入排序 我们知道,插入排序在进行排序时如果当数据量很大的时候,有一个很小的数据出现在了数组的最后,那么我们就要移动了这个数据前面所有的元素给它放置到合适的元素.例如: 我们要排序的数组为[1,2,3,4,5,6,7,...此处省略一百万...,0].详细大家肯定不喜欢这个0往前移动一百万此吧. 希尔排序的出现其实就是为了解

死磕算法之堆排序

学习更多算法系列请参考文章:死磕算法之汇总篇 堆排序主要是运用了二叉树的性质来进行的排序. 在进行堆排序之前我们先了解一下二叉树的几个性质: 1.在排序使用二叉树的时候我们要排序的数组的第0个位置其实是不可以用的,这个时候如果我们要排序的数组为[3,1,0,2,8,4,2]时,我们首先要把它变为[0,3,1,0,2,8,4,2],我们把他转换为二叉树的时候是这样的 2.观察此二叉树我们可以发现几个公式: 父节点个数:(数组长度-1)/2 父节点索引为1到父节点个数 子节点的索引:左儿子为父节点索

死磕算法之插入排序

学习更多算法系列请参考文章:死磕算法之汇总篇 相信大家都有打扑克的经历,那么我们今天的插入排序就以拿牌为例开始讲(注意只是举例,不是按打牌的规则哦) 1.我们拿到了一张牌3,我们把它放手里,现在手里有牌[3] 2.我们拿到了一张牌1,拿它与手里最后一张牌也就是3比较,发现1比3小,所以我们把它插入到3的前面,现在手里有牌[1,3] 3.我们拿到了一张牌0,拿它与手里最后一张牌也就是3比较,发现0比3小,所以我们把它插入到3的前面,接着与3的上一张比较发现0比1还小,那么就把0在插入到1的前面,现

死磕算法之快速排序

学习更多算法系列请参考文章:死磕算法之汇总篇 快速排序是一个运用了分治法和递归算法的排序方式. 假如我们现在要排序的数组为[3,1,0,2,8,4,2].那么在进行快速排序的时候我们先要进行一些准备: n作为一个数组中的标杆,一趟排序过后我们要把数组中所有大于n的数放在它的右边,所有小于n的放在它的左边.一般情况下我们会取数组第一个元素作为n,在此数组中就是n=3 i我们使用i来找数组中大于标杆的值,i初始指向数组第一个位置 j我们使用j来找数组中小于标杆的值,j初始指向数组最后一个位置 下面开

死磕算法之二分查找法

学习更多算法系列请参考文章:死磕算法之汇总篇 二分查找又称折半算法,此算法作为一个经典的查找算法是我们不得不掌握的算法 这个算法查找的前提是查找的数据是有序的,我们以数组为例,使用二分查找法进行查找的时候我们应该先定义三个字段: 1.left指向数组第一个数据 2.right指向数组最后一个元素 3.mid呢指向(left+right)/2位置的元素,就是他们中间的位置. 当我们要在一个数组中查找一条数据a时,有这么几个步骤: 首先我们拿a与mid比较,如果a与mid相等那么我们就成功找到了这个

死磕算法之冒泡排序

学习更多算法系列请参考文章:死磕算法之汇总篇 冒泡排序在排序算法中效率算最慢的一类了,但是因为它简单的缘故仍然是工作1-3年的程序员面试经常会碰到的算法问题,今天就来给大家分析一下冒泡排序的排序流程. 假如我们现在要排序的数组为[3,1,0,2,8,4,2]那么我们第一轮排序为 比较3和1,发现3比1大,那么我们就交换3和1,数组变成了[1,3,0,2,8,4,2] 比较3和0,发现3比0大,那么我们就交换3和0,数组变成了[1,0,3,2,8,4,2] 比较3和2,发现3比2大,那么我们就交换

死磕salt系列-salt文章目录汇总

死磕salt系列-salt入门 死磕salt系列-salt配置文件 死磕salt系列-salt grains pillar 配置 死磕salt系列-salt 常用modules 死磕salt系列-salt 配置文件管理 死磕salt系列-salt API 使用 死磕salt系列-salt 故障汇总 原文地址:https://www.cnblogs.com/biglittleant/p/8743984.html

死磕 java同步系列之AQS终篇(面试)

问题 (1)AQS的定位? (2)AQS的重要组成部分? (3)AQS运用的设计模式? (4)AQS的总体流程? 简介 AQS的全称是AbstractQueuedSynchronizer,它的定位是为Java中几乎所有的锁和同步器提供一个基础框架. 在之前的章节中,我们一起学习了ReentrantLock.ReentrantReadWriteLock.Semaphore.CountDownLatch的源码,今天我们一起来对AQS做个总结. 状态变量state AQS中定义了一个状态变量state

死磕 java同步系列之终结篇

简介 同步系列到此就结束了,本篇文章对同步系列做一个总结. 脑图 下面是关于同步系列的一份脑图,列举了主要的知识点和问题点,看过本系列文章的同学可以根据脑图自行回顾所学的内容,也可以作为面试前的准备. 如果有需要高清无码原图的同学,可以关注公众号"彤哥读源码",回复"sync"领取. 总结 所谓同步,就是保证多线程(包括多进程)对共享资源的读写能够安全有效的运行. 根据同步的运用场景的不同,实现同步的方式也是随之一起变化,但是总结下来,这些实现方式之间又有一些共通之