随笔分类 - 算法
与算法相关的
摘要:概述 介绍堆排序之前, 要先介绍什么是堆以及最大堆最小堆 什么是堆 这里的堆指的不是堆栈中的堆, 而是一种数据结构. 堆可以视为一棵完全的二叉树,完全二叉树的一个"优秀"的性质是,除了最底层之外,每一层都是满的,这使得堆可以利用数组来表示,每一个结点对应数组中的一个元素, 如下所示: 最大堆 最大堆
阅读全文
摘要:概述 希尔排序是插入排序的一种更高效的改进版本. 希尔排序的基本思想是: 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止 就是将插入排序分组一下 分组排序步骤如下: 选定一个增量, 即
阅读全文
摘要:概述 冒泡排序是一种简单的排序算法. 它重复的走过要排序的数列, 每次比较相邻的两个元素, 若它们的顺序错误就把他们进行交换, 如此循环进行, 直到冒泡到最后一个元素或本次比较不需要进行冒泡 就结束. 因为元素就像一个一个向上冒, 故而叫做冒泡算法, 个人理解. 冒泡排序的执行步骤如下(从小到大):
阅读全文
摘要:概述 快速排序算法是基于交换的高效排序算法, 采用了分治的思想. 其基本思想如下: 从数列中取出一个数作为基准数 将数组进行划分, 将比基准数大的元素移至右侧, 比基准数小的元素移至左侧 对左右的子区间重复进行排序, 直至每个子区间只有一个元素 其时间空间复杂度如下: 快速排序就是将小的放左边, 大
阅读全文
摘要:概述 插入排序是一种简单直观的排序算法. 插入排序的工作原理就是, 对于未排序数据, 在一排序序列中从后向前扫描, 找到对应的位置并插入. 插入排序算法描述如下: 从第一个元素开始, 该元素可以认为已经被排序 取出下一个元素, 在已经排序的元素序列中从后向前扫描 若序列中的元素大于取出的元素, 则向
阅读全文
摘要:概述 选择排序是一种简单直观的排序算法. 它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素, 存放在序列的起始位置,直到全部待排序的数据元素排完. 选择排序是不稳定的排序方法. 选择排序是从序列中选出最大或最小数, 将其放到最前面, 然后继续选择, 故而叫做选择排序, 个人理解.
阅读全文
摘要:分布式经典结构 如图所示的结构, 当前端接收到请求时, 通过计算key的哈希值, 将哈希值模3, 然后分布到不同的后端服务器上 但是, 这样的结构当添加或减少后端服务器时就暴露了问题, 每次添加或减少后端服务器, 放在服务器中的所有数据都要全部重新计算哈希, 将哈希值摸新的台数, 重新添加. 如此,
阅读全文
