摘要:
什么是桶排序? 桶排序是计数排序的升级版,有些排序场景计数排序无法使用(数值超出范围或者不是整数)。将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序) 算法描述 设置 n 个数量的空桶,并且确定每个桶的范围; 遍历输入数据,并且把数据一个一个放到对应的 阅读全文
摘要:
什么是计数排序? 计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数 计数排序最重要的一点,确定范围的整数,比如说范围 0-10,那么数组里面的值就要在 0-10 之间 栗子 序列: 阅读全文
摘要:
什么是堆排序? 是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点 在看本文之前请先了解以下概念 完全二叉树:除了最后一层之外的其他每一层都被完全填充,每一层从左到右的填充数据,不能空缺(只是类似这个结 阅读全文
摘要:
什么是快速排序? 在一个序列中随机找出一个数(称为基准元素),然后就是比基准元素小的数放在左边,比基准元素大的数放在右边,这样就将一个序列分成了两个子序列,然后再按照同样的方法把子序列再分成更小的子序列,直到不能分解为止 栗子 紫色:基准元素 绿色:比基准元素小的数 黄色:比基准元素大的数 算法描述 阅读全文
摘要:
什么是归并排序? 把长度为 n 的输入序列分成两个长度为 n/2 的子序列; 对这两个子序列分别采用归并排序; 将两个排序好的子序列合并成一个最终的排序序列。 总的来说就是先拆分,后合并,合并的同时进行排序 栗子 归并排序就像一场比武大赛 举个例子,有 A、B、C、D、E、F、G、H 一共 8 个武 阅读全文
摘要:
我刚开始看这个的时候,一脸懵逼。后面又多看了几篇其他人的文章后才理解了 在了解这个希尔排序之前,我想先进行一个小游戏,大家应该都有玩过。希尔排序原理和这个小游戏差不多 小明(玩家)、安琪拉(出题者) 安琪拉:请你在 0~100 之间,猜一个数,猜的次数越少分数越高 正常玩家,可能会依次从 0 开始一 阅读全文
摘要:
什么是插入排序? 就是在数组中从左到右,先取一个数出来,然后把它放到合适的位置 算法描述 假设一个数组中有 2 个区域 5, 8, 2, 3, 1 有序区为空,无序区为 5, 8, 2, 3, 1 首先在无序区中选第一个值(5),把它放在有序区的尾部,第一步基本上不用动 结果:5, 8, 2, 3, 阅读全文
摘要:
什么是选择排序? 基本思想:在一个排列中划分为有序区和无序区,有序区在左边,无序区在右边。首先在无序区中找到最小(大)元素,存放到有序区的起始位置,然后,再从剩余的无序区中继续寻找最小(大)元素,然后放到有序区的末尾。以此类推,直到无序区没有元素可排列 直观表达:就是在一个数组中遍历查找,找到小的放 阅读全文
摘要:
什么是冒泡排序? 基本思想:冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢浮起来 直观表达:即在数组排序中,从小到大排序 算法描述 从第一个数开始,每 2 个相邻的数进行比较,小的放在左边,大的放在右边。反反复复重复 n 遍,n 即代表数组的长度 - 1 描述太多也没用,直接看图就能懂了 代 阅读全文
摘要:
网上看了很多文章,只想说一句话:“真的啥都没看懂”。以下是我个人的理解,有不对的地方可以提出。 在描述他们之间的区别之前,我们首先要了解一下什么是 BFC、IFC、GFC、FFC? 我们知道元素有内联元素、块级元素、行内块级元素,在页面上渲染时它们的定位,排列方式等都有所不同,就是因为它们根据内部的 阅读全文